Risotto alla Milanese is a creamy dish made with Arborio rice that’s gently cooked in beef stock and wine and finished with Parmigiano Reggiano, butter, parsley, and saffron. This risotto makes the perfect side to a wide variety of meat, but goes especially well with braised dishes like Osso Buco.

Overhead shot of white plate with Risotto alla Milanese topped with shaved Parmigiano Reggiano cheese.

Risotto Milanese is a wonderfully creamy and flavorful dish that’s equally beautiful to look at.

Strands of saffron give this risotto alla Milanese its distinct yellow color and flavor.

While risotto in general can be intimidating to make, these step by step instructions and tips will guide you through the process so you can achieve perfect, creamy results.

Risotto alla Milanese is a dish that’s traditionally served with osso buco, but would also go perfectly with pork chops Milanese, or braised short ribs.

Ingredients shown: low-sodium chicken stock, Parmigiano Reggiano, shallot, white wine, butter, carnaroli rice, parsley, and saffron.

How to make it

Each number corresponds to the numbered written steps below.

  1. Finely dice 1 large shallot and mince 3 tablespoons of flat-leaf parsley.  Grate 1 cup of Parmigiano Reggiano cheese and set aside.  Note: You could easily sub a small onion for the shallot

Risotto alla Milanese recipe process shot collage group number one.

  1. In a large saucepan, heat 8 cups of beef stock and bring to a simmer.  While the stock is warming, saute the shallot in a large non-stick pan with 3 tablespoons of butter for 3-4 minutes, or until soft.
  2. Add 2 cups of Arborio (or Carnaroli, or Vialone Nano) rice to the pan with the shallots and cook for 2-3 minutes, stirring frequently, until the rice is translucent around the edges.

Recipe process shot collage group number two.

  1. Add 3/4 cup of dry white wine to the rice and turn the heat up to high.  After 2-3 minutes the wine will reduce by half and the heat can be lowered to a simmer.
  2. Add a 1/2 cup of stock at a time to the rice and stir frequently.  

Recipe process shot collage group number three.

  1. As the liquid evaporates, add another 1/2 cup of stock.  Repeat the process, cooking at a low to medium simmer, until the risotto is al dente and creamy but not overcooked.  This process should take about 20 minutes, but the exact time doesn’t matter.  Cook it until it is al dente.  Note: You may not need to use all of the stock.
  2. About 5 minutes before the risotto is finished, mix a 1/2 cup of warm chicken stock with a 1/2 teaspoon worth of saffron threads.  

Recipe process shot collage group number four.

  1. Once you’re satisfied with the risotto’s consistency, remove the pan from the heat.
  2. Add the saffron mixture and mix well.  Add 5 tablespoons of butter, the grated Parmigiano Reggiano, and parsley.  Mix to combine. 

Recipe process shot collage group number five.

  1. Taste test and season with salt and pepper to taste.  Serve immediately and enjoy!

Overhead shot of large black pan with Risotto alla Milanese and wooden spoon.

Top tips for risotto alla Milanese

  • Cooking station. Risotto is a hands-on dish so having the proper setup will yield a superior product.  Ingredients should be prepped ahead of time and your stock pot should be close enough to your risotto pan so ladling the stock is easy.
  • Rice. We used carnaroli rice or the “caviar” of risotto rice, which is considered one of the best types of risotto rice.  But, arborio rice is far more available and will work just as well.
  • Cooking time. The time in which risotto cooks may vary depending on your heat level and the best way to tell if risotto is done is to taste it.  The consistency should have unbroken rice kernels that are al dente but creamy.  
  • Saffron. Saffron is on the pricier side when it comes to ingredients, but it is the defining characteristic of risotto alla Milanese.  It provides its distinct yellow color and flavor and is an important part of the dish.  Saffron is also a common ingredient in pasta con le sarde.
  • Stock. We used beef stock for this recipe but you can also use chicken or a combination of the two.  For vegetarians, vegetable stock can certainly be used.

Risotto alla Milanese and veal osso buco in blue plate.

As you can see in the above pic, risotto alla Milanese is the perfect partner for veal osso buco.

More creamy Italian dishes 

We think you’ll love these other comforting and creamy dishes!

  • Mushroom risotto – Arborio rice, mushrooms, shallots, and Parmigiano Reggiano.
  • Riso al forno – baked rice with peas, cheese and meat sauce.
  • Pasta alla Norcina – sausage, mushrooms, Pecorino Romano, and a touch of nutmeg. 
  • Cacio e pepe – pasta with a simple sauce of Pecorino Romano, black pepper, and pasta water.

If you’ve enjoyed this risotto alla Milanese recipe or any recipe on this site, give it a 5-star rating and leave a review.

We strive to satisfy a number of learning styles.  If you are someone who prefers to learn by watching, you can find most of our recipes on YouTube and our Facebook Page.

Risotto alla Milanese

5 from 3 votes
Prep: 10 minutes
Cook: 45 minutes
Total: 55 minutes
Servings: 6
Risotto alla Milanese is a creamy and decadent dish made with Arborio rice simmered in broth until creamy and finished with butter, Parmigiano Reggiano, saffron, and parsley.


  • 2 cups Arborio rice or Carnaroli, or Vialone Nano
  • 8 cups low-sodium beef stock can also sub chicken or vegetable stock
  • 3/4 cup dry white wine
  • 8 tablespoons butter divided
  • 1 large shallot finely diced
  • 1 cup Parmigiano Reggiano grated, plus more for serving
  • 3 tablespoons flat-leaf parsley minced
  • salt and pepper to taste

For the saffron mixture


  • In a large saucepan, heat the beef stock and bring to a low simmer.
  • Heat a large, preferably nonstick, pan to medium heat with 3 tablespoons of butter. Add the shallot and saute until soft (about 3-4 minutes).
  • Add the rice and stir frequently while continuing to cook for another 2-3 minutes or until the rice turns a bit translucent at the edges.
  • Add the wine to the pan and turn the heat to high. Reduce the wine by half (about 2-3 minutes) then turn the heat down to a low simmer.
  • Add a 1/2 cup of the stock at a time and stir frequently. As the liquid evaporates, add another 1/2 cup of stock.
  • Repeat the process, cooking at a low to medium simmer, until the risotto is al dente and creamy, but not overcooked (should take about 20 minutes). You might not need to use all of the stock.
  • Approximately 5 minutes before the risotto has finished, mix a 1/2 cup of warm chicken stock with the saffron.
  • When satisfied with the consistency, remove the risotto from the heat and add the saffron mixture. Mix well then add the butter, grated cheese, and parsley. Taste test, and season well with salt and pepper to taste. Serve immediately.


  • The exact amount of cooking time will vary.  The risotto is done when it is creamy but al dente which will be anywhere from about 20-30 minutes.
  • The exact amount of liquid will vary.  You want to cook the risotto until it is creamy but still al dente.
  • The saffron is best added at the end to retain all of its flavors.  A 1/2 teaspoon is a good amount though a touch more wouldn't be a bad idea!
  • While we recommend eating risotto right away, leftovers can be saved for up to 3 days in the fridge and can be reheated in the microwave or on the stovetop.


Calories: 459kcal | Carbohydrates: 56.3g | Protein: 11g | Fat: 18.6g | Saturated Fat: 11.7g | Cholesterol: 20mg | Sodium: 333mg | Potassium: 109mg | Fiber: 2.1g | Sugar: 1.1g | Calcium: 137mg | Iron: 2mg

Nutrition information is automatically calculated, so should only be used as an approximation.

Like this? Leave a comment below!Check us out on Instagram at @sipandfeast or tag #sipandfeast!

Leave a comment

Your email address will not be published. Required fields are marked *

Recipe Rating

This site uses Akismet to reduce spam. Learn how your comment data is processed.


  1. I’ve always been afraid to try risotto. The texture needs to be perfect to enjoy. I’ll give it a try again following your instructions. Either it comes out mushy or too aldente. Here’s hoping I get it right this time around.