This Classic Osso Buco is the ultimate Italian comfort food, featuring braised fork-tender veal shank in a rich red wine sauce. Slowly simmered with onions, carrots, and fresh herbs, the sauce develops deep, bold flavors.
Paired with creamy Saffron Risotto and an Arugula Salad with Lemon Vinaigrette, it’s an elegant yet surprisingly easy dish for cozy dinners or entertaining.
Save This Recipe 💌
Osso buco, meaning "bone with a hole", is a traditional Milanese dish made with slow-braised veal shanks. As the meat cooks, the bone marrow melts into the sauce, creating an incredibly rich flavor. Often served with risotto alla Milanese, it’s a true classic of Northern Italian cuisine.
If you like this Italian recipe, you may also love our Slow-Braised Beef Braciole or our Tuscan Garlic Butter Chicken.
Jump to:
- Why We Love This Recipe
- Ingredients
- How To Make Classic Osso Buco with Creamy Saffron Risotto
- Substitutions and Variations
- How Can I Customize this Recipe?
- Expert Tips for Success
- How Should I Store and Reheat this Recipe?
- Recipe FAQs
- More Braised Beef Recipes You'll Love ♥️
- Related Italian Recipes
- 📖 Recipe
- 💬 Share Your Thoughts
Why We Love This Recipe
- Slow Braising Enhances Flavor: The meat becomes ultra-tender as it cooks low and slow.
- Restaurant-Quality at Home: This dish feels fancy but requires minimal effort.
- Perfect for Entertaining: Great for special occasions or date nights.
- Better the Next Day: The flavors develop even more after resting overnight.
Ingredients
This Osso Buco recipe relies on high-quality ingredients to achieve its signature depth of flavor.
- Veal Shanks: The ideal cut for a tender, fall-apart texture. The bone marrow enhances the sauce with natural richness.
- Onion, Carrots & Celery: This mirepoix base adds depth and a subtle sweetness.
- Garlic: A must-have for bold, savory undertones.
- Tomato Paste: Enhances flavor and brings a touch of acidity to balance the dish.
- Aromatics: Bay leaves, rosemary, and thyme add freshness and depth.
- Salt and Pepper: Essential seasonings.
- Red Wine: A dry Cabernet Sauvignon or Merlot adds bold, fruity depth to the sauce.
What Makes Saffron Risotto So Creamy?
- Arborio Rice: A starchy short-grain rice that creates a naturally creamy texture.
- Parmesan: A nutty flavor and helps create a smooth, velvety consistency. Add leftover Parmesan to this Italian Lentil Soup with Sausage.
- Saffron Threads: Adds a golden color and delicate aroma.
📌 Variation: Try our Creamy Mushroom Risotto with Truffle Oil instead!
A full ingredient list with exact measurements can be found in the recipe card below.
How To Make Classic Osso Buco with Creamy Saffron Risotto
STEP ONE: Sear the Veal Shanks
Pat veal shanks dry and season with salt and pepper. Dredge lightly in flour, shaking off excess.
Heat olive oil in a Dutch oven over medium-high heat. Sear shanks for 4-5 minutes per side until golden brown. Remove and set aside.
STEP TWO: Build the Sauce
In the same pot, sauté onions, celery, and carrots for 5-7 minutes. Stir in tomato paste and cook for 2-3 minutes until deep red. Add garlic and cook for 1 more minute. Pour in red wine, scraping up any browned bits. Let reduce for 3-4 minutes.
STEP THREE: Braise the Veal
Return veal to the pot. Add broth, bay leaves, and herbs. Cover and braise in a 325°F (160°C) oven for 2½ to 3 hours, turning once. Check after 2½ hours – the veal should be fork-tender.
STEP FOUR: Make the Risotto & Serve
In a pan, heat butter and olive oil over medium heat. Sauté onions until translucent, about 3 minutes. Add rice, stirring for 1-2 minutes until lightly toasted. Pour in white wine, stirring until absorbed.
Slowly add warm broth, one ladle at a time, stirring constantly. Continue for about 18-20 minutes. Stir in saffron, Parmesan, salt, and pepper. Serve risotto with veal shanks and extra sauce spooned over the top.
Substitutions and Variations
- Veal: Use beef shanks instead of veal for a more budget-friendly dish.
- Beef broth: Use vegetable broth instead of beef stock for a lighter sauce.
- Red wine: Omit and substitute with more beef broth or use white wine instead.
How Can I Customize this Recipe?
- Flavor: Add gremolata (a mix of lemon zest, garlic, and parsley) for a citrusy contrast.
- Equipment: Make it in a slow cooker by braising on low for 6-8 hours instead of using the oven.
Expert Tips for Success
👩🍳Jami's Pro Tips: Want to take this recipe to the next level? Check out my expert tips below for the best flavor, texture, and more meal prep hacks!
✔️ DO sear the veal shanks well before braising to develop deep flavor.
✔️ DO use a Dutch oven with a tight-fitting lid to retain moisture.
✔️ DO let the meat rest for 10 minutes before serving for the best texture.
❌ DO NOT rush the braising process. Low and slow cooking is key to tender meat.
❌ DO NOT add all the broth at once when making risotto; add gradually for creaminess.
❌ DO NOT discard the bone marrow. This adds incredible richness to the sauce
How Should I Store and Reheat this Recipe?
- Storage: Keep leftover Osso Buco and risotto refrigerated for up to 3 days. To freeze, let the veal cool completely, then transfer to an airtight container or freezer bag with some sauce to prevent freezer burn. It can be frozen for up to 3 months and should be thawed in the fridge overnight before reheating.
- Reheating Options:
- Oven: 300°F for 20 minutes.
- Microwave: Heat in 1-minute intervals, stirring in between.
- Skillet: Reheat over medium heat with a splash of broth.
Recipe FAQs
Osso buco is traditionally made with veal shanks, which are rich in collagen and marrow, creating a deeply flavorful sauce. However, beef shanks are a more affordable alternative that still yields tender, fall-apart meat after slow braising.
Yes! While red or white wine enhances the depth of flavor, you can substitute it with extra beef or chicken broth and add a splash of balsamic vinegar to balance the acidity.
To prevent osso buco from drying out, make sure to braise it low and slow at 325°F (160°C) and keep the shanks partially submerged in broth. Also, using a heavy-lidded Dutch oven helps retain moisture for fork-tender results.
More Braised Beef Recipes You'll Love ♥️
- Braised Short Ribs
- Lamb Shanks in Red Wine
- Coq au Vin
- Roasted Lamb Shanks with Lemon Herb Potatoes
- Slow Cooker Chuck Roast with Vegetables
Did You Like This Classic Osso Buco?
- Leave a ⭐️⭐️⭐️⭐️⭐️ Star Rating if think this braised veal dish is divine!
📖 Recipe
Classic Osso Buco with Saffron Risotto
Equipment
- Dutch oven
- Tongs
- Cutting board
- Sharp Knife
- Wooden spoon
- Measuring cups and spoons
- Kitchen twine
Ingredients
- 2 large veal shanks 1.5 to 2 inches thick, bone-in
- ⅓ cup all-purpose flour for dredging
- 2-3 tablespoons olive oil
- 1 medium onion chopped
- 2-3 celery stalks chopped
- 2 medium carrots sliced
- 4 garlic cloves minced
- 2 tablespoons tomato paste
- 1½ cups dry red wine Cabernet Sauvignon or Merlot work well
- 2½-3 cups beef broth low sodium
- 2 bay leaves
- 1 small bundle fresh rosemary and thyme tied together
- salt and freshly cracked black pepper to taste
Saffron Risotto
- 1½ cups Arborio rice
- 4 cups chicken broth kept warm
- 2 tablespoons unsalted butter
- 1 small onion finely chopped
- ½ cup dry white wine
- 1 tablespoon olive oil
- ¼ teaspoon saffron threads about 0.2 grams
- ½ cup grated Parmesan cheese
- salt and freshly cracked black pepper to taste
Instructions
- Pat the veal shanks dry with paper towels. Season all over with salt and freshly cracked black pepper. Lightly dredge in flour, shaking off excess.
- Heat the olive oil in a large Dutch oven over medium-high heat. Add the veal shanks and sear for 4-5 minutes per side, until deeply golden brown. Remove and set aside.
- In the same pot, add onion, celery, and carrots. Sauté for 5-7 minutes, stirring occasionally, until softened. Stir in tomato paste and cook for 2-3 minutes, stirring frequently, until it deepens in color and caramelizes slightly. Add the garlic and cook for 1 more minute until fragrant.
- Pour in the red wine, scraping up any browned bits from the bottom of the pot. Let it simmer for 3-4 minutes to reduce slightly.
- Return the veal shanks to the pot. Add beef broth, bay leaves, and the bundled rosemary and thyme. The liquid should come halfway up the veal shanks.
- Cover and braise in the oven at 325°F (160°C) for 2½ to 3 hours, turning the shanks halfway through. Check at 2½ hours to see if the veal is fork-tender and falling off the bone.
- In a large skillet or saucepan, heat the butter and olive oil over medium heat. Add the chopped onion and sauté until translucent, about 3-4 minutes.
- Add Arborio rice and stir for 1-2 minutes until lightly toasted. Pour in the white wine and stir until absorbed.
- Stir in the saffron threads and begin adding the warm chicken broth, one ladle at a time, stirring constantly until each addition is absorbed before adding the next. Continue for about 18-20 minutes, until the risotto is creamy and tender.
- Stir in grated Parmesan, season with salt and pepper, and remove from heat.
- Spoon saffron risotto onto plates. Place a braised veal shank on top, spooning extra braising sauce and vegetables over the meat. Sprinkle with fresh parsley and serve.
Notes
- Veal: Use beef shanks instead of veal for a more budget-friendly dish.
- Beef broth: Use vegetable broth instead of beef stock for a lighter sauce.
- Red wine: Omit and substitute with more beef broth or use white wine instead.
Jami Powell
This Osso Buco is incredible! Our family loves to serve it on special occasions.