Learn how to make a Traditional Risotto Milanese with creamy arborio rice, saffron, and classic Italian flavors. A creamy, traditional Northern Italian recipe you’ll cook again and again.
If there’s one dish that can instantly make an evening feel special, it’s a creamy, golden, Traditional Risotto Milanese.
This saffron-infused classic has been gracing Italian tables for centuries, and for good reason!
This recipe is all about simple ingredients, slow stirring, and letting saffron work its magic. The result is a silky, glowing risotto that feels restaurant-worthy yet is wonderfully easy to make at home.
Every year, as the holidays roll around, I find myself craving dishes that feel like a warm hug, and this risotto is exactly that.
The first time I made it, I remember standing at the stove, stirring slowly, watching the rice transform from simple grains into something silky, fragrant, and borderline luxurious.
That’s why this recipe always makes a comeback during the festive season. It’s comforting without being heavy, elegant without being fussy, and honestly? It just makes people happy.
It’s the perfect bowl to share when gatherings get cozy, evenings get colder, and we all want something a little special but still beautifully simple.
And the best part?
This iconic Italian classic translates beautifully into a fully vegan version without losing any of its elegance. Truly, nobody at the table will miss the dairy. With just a few smart swaps, like vegan butter, a good dairy-free Parmesan, and a flavorful vegetable broth, you get all the richness and aroma of the original, but entirely plant-based.
So this holiday season, grab your pot, your spoon, and your tiny pinch of saffron. Let’s create a little golden magic.

Risotto Milanese Ingredients
To make an authentic, ultra-creamy Risotto Milanese (Saffron Risotto), you only need a handful of quality ingredients, but each one plays a key role in building that signature golden color and luxurious texture. Here’s everything that goes into this timeless Italian classic!
- Genuine saffron (threads or powder): Saffron is the soul of Risotto Milanese! It gives the dish its iconic golden color and delicate floral aroma. Threads are ideal for depth of flavor, but high-quality saffron powder works too. A little goes a long way, and soaking it in warm broth helps release its full fragrance.
- Olive oil: A splash of good olive oil is used to sauté the onions and create a flavorful base.
- Onion: Finely diced onion adds gentle sweetness and the classic soffritto foundation essential in traditional Italian risotto. Cook it slowly so it softens without browning. That’s the secret to a beautifully balanced risotto.
- Risotto rice: This is the heart of the dish. Make sure to use rice for making risottos, like Arborio or Carnaroli. Carnaroli is often preferred for its firm texture and creamy finish, but Arborio works wonderfully too. These rice varieties release starch gradually, creating that signature rich, silky risotto texture you can’t get from other types of rice.
- Dry white wine: The wine adds brightness and acidity, balancing the richness of the butter and cheese. As it cooks off, it leaves behind a subtle depth that gives the risotto its unmistakable personality.
- Vegetable broth: Warm broth is added slowly, ladle by ladle, allowing the rice to cook evenly and absorb flavor. Keeping the broth hot is key, as it helps maintain the creamy consistency without shocking the rice and slowing the cooking process.
- Salt and pepper
- Parmesan cheese: Freshly grated Parmesan melts into the risotto, adding umami richness and helping the dish achieve its velvety texture. The quality of Parmesan (or a well-aged alternative) truly makes a difference here.
- Butter: Cold butter, stirred in at the end, transforms the risotto from simply creamy to luxuriously silky. This final step is what gives Risotto Milanese its famously luscious finish.

How to keep this dish 100% Plant-based
Traditional Risotto Milanese is made with butter and Parmesan, but it’s incredibly easy to adapt the recipe while keeping all the creaminess and luxurious flavor intact.
- Use vegan butter instead of dairy butter: Choose a high-quality vegan butter with a rich, creamy texture. It helps create that silky finish during the final stirring. You can even use a good glug of olive oil.
- Replace Parmesan with vegan Parmesan or nutritional yeast: A good vegan Parmesan is the closest replacement; nutty, salty, and meltable. Nutritional yeast adds depth and savoriness if you prefer a more natural option. You can even use a mix of both for the best flavor. For a little crunch at the end, you can also use pangrattato (toasted breadcrumbs).
- Choose a vegetable broth: Traditional versions sometimes use beef broth, so opt for a flavorful vegetable broth instead. A homemade broth or a high-quality store-bought one makes a big difference.
- Saffron is naturally vegan: Authentic saffron is plant-based! Just soak it in hot water or vegetable broth to release its color and aroma.
The result: A luxurious, fully vegan risotto! With these swaps, you’ll still get:
- the signature golden saffron color
- velvety, creamy texture
- rich, aromatic flavor
- a dish that feels special enough for holidays, dinner parties, or cozy nights in.
How to make a Traditional Risotto Milanese
Now that your ingredients are ready, it’s time to bring this luxurious saffron risotto to life. Don’t worry, while Risotto Milanese looks fancy, the process is wonderfully simple when you follow it step by step.
We’ll gently build flavor, coax out that signature creaminess, and finish with a silky, golden dish worthy of any holiday table. Let’s get cooking!
Prepare the saffron infusion
Start by blooming the saffron. This step is essential for unlocking its full flavor and golden color. Pour 60 ml (¼ cup) of hot water into a small cup and add the saffron threads. Stir gently, then let the mixture steep for at least 15 minutes.
The longer the saffron sits, the deeper the color and aroma. You can even prep it a few hours ahead for an even richer infusion.
Sauté the onion base
In a large, heavy-bottomed pan (a wide sauté pan is ideal), heat 1 tablespoon of olive oil over medium heat. Add the finely chopped onion and cook for 6–8 minutes, stirring occasionally.
You want the onion to become soft and translucent, but not browned. Browning would add sweetness that isn’t traditional in Risotto Milanese.
If the pan dries out or onions begin browning, lower the heat and add a splash of broth.

Toast the rice (tostatura)
Add the risotto rice to the pan and stir for 1–2 minutes until each grain is well coated with oil and feels warm to the touch. This step lightly toasts the rice, helping it maintain structure while still turning creamy. Listen for a soft crackling sound; this is a sign the rice is toasting properly.
Deglaze with white wine
Pour in the white wine and let it simmer for 2–3 minutes, stirring occasionally. This evaporates the alcohol and creates a bright, fragrant base.

Begin adding broth + saffron liquid
Once the wine has mostly evaporated, add your first ladle of hot broth along with all of the saffron water.
Stir gently and allow the rice to absorb the liquid before adding the next ladle.
If you want a more intense saffron flavor, save 1–2 tablespoons of the saffron infusion to add at the very end.

Continue adding broth one ladle at a time, stirring frequently but not constantly. The idea is to let the rice rub against itself; this friction naturally releases starch, creating that classic creamy texture.
Keep the broth simmering in a separate pot so it never cools the rice down. If the risotto sticks to the bottom, your heat is likely too high, so reduce it slightly.

Cook until al dente
Continue cooking for 15–18 minutes, adding broth gradually and stirring as needed.
The rice should be tender but still have a slight bite in the center (“al dente”).
Season lightly with salt and pepper as you go, keeping in mind the Parmesan will add saltiness later.
Finish with butter and Parmesan
Once the rice is perfectly cooked and creamy, remove the pan from the heat.
Quickly stir in the grated Parmesan and cold butter, mixing vigorously until the risotto becomes glossy and velvety.

Cold butter emulsifies better! It’s the secret to that restaurant-quality finish.
Cover and let the risotto rest for 1 minute before serving. This short pause allows the textures to settle into peak creaminess.
Serve immediately
Risotto waits for no one! Serve it piping hot, ideally in warm bowls to maintain that beautiful, flowing, creamy consistency known as all’onda (“like a wave”).

Serving suggestions
Traditional Risotto Milanese shines when it’s served simply: creamy, golden, and hot from the pot. In Milan, it’s often enjoyed as a standalone first course (primo piatto), allowing the saffron aroma and velvety texture to take center stage.
Spoon it into warm bowls, give it a gentle shake to let it settle into that iconic creamy puddle, and finish with an extra sprinkle of Parmesan if you’re feeling indulgent.
If you want to serve the Risotto Milanese as a side, it is traditionally served with Ossobuco, which is rich, slow-cooked veal shanks. If you eat meat or cook for guests who do, this is the iconic Milanese duo.
For a lighter vegetarian option, you can do:
- Roasted or grilled vegetables: Think roasted carrots, charred asparagus, grilled zucchini, or caramelized fennel. Their sweetness beautifully balances the richness of the risotto.
- Sautéed mushrooms: Earthy mushrooms (porcini, cremini, or chanterelles) match the warm aroma of saffron wonderfully. Serve them on top or alongside for a luxurious vegetarian pairing.
- Crispy tofu or seared halloumi: For a protein boost without meat, pan-seared halloumi or crispy tofu cubes add a lovely contrast in both flavor and texture.
- Fresh green salad: A simple arugula or mixed-greens salad with lemon vinaigrette makes a refreshing companion that cuts through the creaminess.
Storage tips
While traditional Risotto Milanese is best enjoyed straight from the pot, you can still store and enjoy leftovers with a little care. Here’s how to keep that luxurious creaminess intact (and even transform any extras into something delicious)!
️In the fridge (1–2 days)
Transfer the risotto to an airtight container once it cools slightly. Because risotto contains dairy and has a higher moisture content, it’s best eaten within 1–2 days for optimal texture and food safety.
Reheating tips
Risotto thickens as it chills, and that’s completely normal. To bring it back to life, reheat gently on the stove over low heat. Add a splash of broth, water, or even a bit of milk to loosen it. Stir continuously until creamy again. It won’t be exactly like fresh risotto, but still be very satisfying.
Freezing (not recommended):
Risotto Milanese doesn’t freeze well. The rice becomes mushy, and the creamy texture gets grainy. Fresh or refrigerated is best.
Similar recipes:
Pearl Barley and Pumpkin Risotto
This recipe is sponsored by Hofer Slovenija.


Traditional Risotto Milanese
A simple, authentic guide to making a traditional Risotto Milanese. This is a creamy, saffron-infused risotto that is full of classic Italian flavor. Perfect for any occasion, especially on holidays!
Ingredients
- 0.125 grams of genuine saffron (threads or powder)
- Tablespoon of olive oil
- Half an onion
- 320 grams of risotto rice (Arborio, Carnaroli, etc.)
- 100 ml dry white wine
- 1 liter vegetable broth
- Salt, pepper
- 80 grams of Parmesan
- 75 grams of butter
Instructions
- Start by preparing the saffron. Pour 60 ml (1/4 cup) of hot water into a cup and add saffron. Stir and let it soak for 15 minutes. During this time, saffron will release its aroma and color into the hot water.
- In a large pan, heat a tablespoon of olive oil, add chopped onion, and sauté it for about 7 minutes until the onion becomes translucent and soft.
- Add the rice to the onion and sauté for a couple of minutes.
- Pour white wine into the rice and simmer for 2-3 minutes until the alcohol evaporates. Add a ladle of broth and the water with the soaked saffron. Simmer for two minutes until the rice absorbs the liquid, then gradually add more broth, one ladle at a time.
- Cook for about 15 minutes until the rice is cooked al dente, stirring and adding liquid occasionally to prevent sticking. Season with salt and pepper to taste.
- Remove the cooked rice from the heat, stir in grated Parmesan and butter, and serve hot.
Notes
To keep this recipe vegan, use plant-based parmesan, or pangratatto, and vegan butter!
Nutrition Information:
Yield: 4 Serving Size: 1Amount Per Serving: Calories: 373Total Fat: 21gSaturated Fat: 13gUnsaturated Fat: 8gCholesterol: 59mgSodium: 569mgCarbohydrates: 29gFiber: 0gSugar: 1gProtein: 10g
Nutrition data is automatically calculated using Nutritionix and may not be accurate.