Ossobuco alla Milanese: Classic Braised Veal Shanks Recipe

Traditional Ossobuco alla Milanese—veal shanks braised in a fragrant tomato and white wine sauce until the meat is melting and falling off the bone. Serve with saffron risotto (Risotto alla Milanese) or creamy polenta and finish with a bright gremolata of parsley, garlic and lemon zest for a truly comforting, elegant meal.

Osso Bucco on a plate of saffron risotto and topped with gremolata

Ossobuco originates from Lombardy in northern Italy; the name literally means “bone with a hole,” referring to the marrow in the cross-cut veal shanks. The marrow enriches the sauce and adds a luxurious finish—spread it on crusty bread or spoon it over the risotto.

Ingredients – what you need

The photo below shows the ingredients used in this recipe (excluding salt, pepper and olive oil). Read the notes for tips on substitutions and technique.

An overhead shot of all the ingredients you need to make Ossobuco Milanese with veal
  • Veal shanks – choose thick cross-cut shanks (about 1 inch / 2.5 cm) so they hold together while braising.
  • Carrot, celery and onion – the soffritto base adds depth and aroma to the braise.
  • Bay leaf and rosemary – fresh herbs give the best flavour; fresh thyme can be used instead of rosemary.
  • White wine – use a dry white wine to deglaze and brighten the sauce; omit only if necessary.
  • Stock – low-sodium chicken stock is recommended to keep the veal’s delicate flavour; avoid strong beef stock.
  • Tomato paste – concentrated tomato paste (tomato puree) strengthens the sauce without adding excess liquid.
  • Gremolata (important!) – a quick mix of finely chopped parsley, garlic and lemon zest lifted over the finished dish makes a big difference.

Sprinkle the veal shanks with salt and press it in so it adheres. Place flour on a plate and lightly dredge each shank, shaking off excess.

Step by step photos showing how to brown ossobuco veal shanks

Heat 1–2 tbsp olive oil in a large skillet or Dutch oven. When hot, brown the veal on both sides. Remove and keep aside.

For neater presentation, tie each shank with kitchen string after browning; this step is optional and does not change the flavour.

Step by step photos showing how to make sauce for ossobuco

In the same pan, add more olive oil if needed, then sauté the finely chopped carrot, celery and onion over medium heat until softened but not browned. Add the garlic and cook for another minute.

Pour in the white wine and reduce by half. Stir in the chicken stock and tomato paste until combined.

Add the bay leaf and rosemary, return the veal to the pan, cover and simmer gently for about 2 hours.

two photos showing before and after reducing the ossobuco sauce

After 2 hours, remove the lid and simmer uncovered for 30 minutes so the sauce reduces and thickens slightly. Adjust seasoning with salt and pepper.

Serve the ossobuco topped with gremolata and alongside saffron risotto, creamy polenta or mashed potatoes. Finish with crusty bread to mop up the sauce.

Recipe tips and FAQs

  • Serving suggestions – Risotto alla Milanese (saffron risotto) is traditional, but creamy polenta, mashed potatoes or any risotto work well.
  • Gremolata – quick to make: finely chop fresh parsley, garlic and lemon zest and sprinkle over the veal before serving.
  • Flouring the veal – dredging in flour helps thicken the braising liquid into a rich sauce.
How do I stop the veal from falling apart?

The meat becomes very tender and may start to fall off the bone toward the end of cooking. If you prefer the shanks to remain intact, tie each shank with kitchen string after browning to hold them together while braising.

Can I use beef instead?

Yes. If veal is hard to find, beef shanks are a good substitute and will yield a stronger, robust flavor.

Can I prepare it in advance?

Yes. The dish reheats well and can be prepared a day or two ahead; store in the fridge for 2–3 days.

What can I do with leftovers?

Reheat until piping hot and serve with your preferred side, or shred the leftover meat into the sauce and toss with pasta.

Can I freeze it?

Yes. Freeze cooled ossobuco in suitable containers or freezer bags and thaw completely before reheating.

A close up of a piece of osso bucco on a fork with sauce

More traditional Italian recipes

  • Chicken Cacciatore – Pollo alla Cacciatora
  • Authentic Bolognese Sauce (Ragu alla Bolognese)
  • Italian Braciole in Tomato Sauce
  • Veal Saltimbocca with Prosciutto and Sage

If you try this Ossobuco recipe, please rate it and leave a comment with how it turned out—you can also follow the blog’s social channels or sign up to the newsletter for more recipes and tips.

Step By Step Photos Above

Most recipes include step-by-step photos and helpful tips to get it right the first time.

Ossobuco Milanese

5 from 3 votes

By Emily

Prep: 10 mins
Cook: 3 hrs
Total: 3 hrs 10 mins
Servings: 4 servings
A close up of ossobuco on a plate
Pin
Print
Traditional Ossobuco alla Milanese braised in tomato and white wine until extra tender. Serve with saffron risotto and gremolata for a classic Italian meal.

Equipment

  • kitchen string (optional)

Ingredients

  • 4 bone-in veal shanks about 1 inch/2.5cm thick
  • 1–2 tbsp flour for dredging
  • 1 carrot finely chopped
  • 1 celery stalk finely chopped
  • 1 onion finely chopped
  • 2 cloves garlic finely chopped
  • 1 bay leaf
  • 2 sprigs rosemary
  • 3 tbsp tomato paste
  • 2 cups chicken stock (500ml)
  • 1 cup white wine (125ml)
  • Salt and pepper to taste
  • 1–2 tbsp olive oil
  • gremolata (finely chopped parsley, lemon and garlic for serving)

Instructions

  • Sprinkle the veal shanks with salt and press it in. Dredge all sides in flour and shake off the excess.
  • Heat 1–2 tbsp olive oil in a large skillet or Dutch oven. When hot, brown the veal on both sides, then remove and set aside.

Optional step – presentation only

  • Tie each shank with kitchen string after browning to keep the pieces intact during cooking.

Make the sauce

  • Add more olive oil to the pan if needed, then sauté the chopped carrot, celery and onion over medium heat until softened but not browned. Add garlic and cook for 1 minute more.
  • Pour in the white wine and reduce by half. Add chicken stock and tomato paste and stir to combine.
  • Add the herbs, return the veal to the pan, cover and simmer gently for 2 hours.
  • Remove the lid and simmer uncovered for 30 minutes until the sauce reduces and thickens slightly. Season to taste.
  • Serve topped with gremolata and with your chosen side.

Notes

  • Serving suggestions – saffron risotto is traditional, but polenta or mashed potatoes are excellent alternatives; don’t forget crusty bread to soak up the sauce.
  • Gremolata – makes a big difference: finely chop parsley, garlic and lemon zest and sprinkle over the ossobuco just before serving.
  • Dusting the veal with flour – helps thicken the sauce during braising.
  • Keeping the shanks whole – tie them after browning if you prefer a neat presentation.
  • Leftovers & freezing – refrigerate for 2–3 days or freeze in suitable containers; thaw completely before reheating.

Helpful Info for All Recipes

  • I use extra virgin olive oil unless noted otherwise.
  • When using canned tomatoes, choose a quality brand for best flavour.
  • All vegetables are medium sized unless otherwise stated.
  • Recipes are developed using a fan (convection) oven unless noted.

Nutrition

Calories: 390kcal |
Carbohydrates: 11 g |
Protein: 47 g |
Fat: 12 g

Nutrition information is automatically calculated and should be used as an approximation.

Did you try this recipe?Leave a comment below!