Ossobuco alla Milanese: Slow-Braised Veal Shanks with Risotto

Traditional Ossobuco alla Milanese — tender braised veal shanks cooked in a fragrant white wine and tomato sauce until the meat falls from the bone. Traditionally served with Risotto alla Milanese (saffron risotto) and finished with bright gremolata (parsley, garlic and lemon zest), this is a comforting, elegant dish perfect for special occasions or a leisurely Sunday dinner.

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

Ossobuco, which literally means “bone with a hole,” comes from Lombardy in northern Italy. The marrow in the shank enriches the sauce and gives the dish its luxurious, silky finish — spoon it out and enjoy on its own or spread on crusty bread.

Ingredients – what you need

Below are the main ingredients and some tips for the best results (salt, pepper and olive oil not listed).

An overhead shot of all the ingredients you need to make Ossobuco Milanese with veal
  • Veal shanks — choose thick bone-in shanks (around 1 inch / 2.5 cm) so they hold together during cooking.
  • Carrot, celery and onion — the classic soffritto base that adds depth to the sauce.
  • Bay leaf and rosemary — use fresh herbs if possible; fresh thyme is a good alternative.
  • White wine — a dry white wine adds acidity and complexity; omit only if necessary, knowing it will change the flavor.
  • Stock — low-sodium chicken stock is best to control salt; avoid beef stock, which can overpower veal.
  • Tomato paste — concentrated tomato paste (tomato puree in the UK) for rich flavor without excess liquid.
  • Gremolata — finely chopped parsley, garlic and lemon zest; sprinkle over the ossobuco just before serving for a lift of fresh flavor.

Lightly season the veal shanks with salt, press to help it stick, then dredge in flour and shake off the excess.

Step by step photos showing how to brown ossobuco veal shanks

Heat 1–2 tablespoons of olive oil in a large skillet or Dutch oven over medium-high heat. Brown the shanks on both sides until nicely colored, then remove and set aside.

Optionally, tie each shank with kitchen string after browning to help them keep their shape for presentation. This step is optional and doesn’t affect flavor.

Step by step photos showing how to make sauce for ossobuco

In the same pan, add more olive oil if needed and 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 simmer until reduced by half. Stir in the chicken stock and tomato paste, then add the herbs.

Return the veal shanks to the pan, nestling them into the sauce. Cover and simmer gently for about 2 hours, until the meat is very tender.

two photos showing before and after reducing the ossobuco sauce

After 2 hours, remove the lid and simmer uncovered for 30 minutes to reduce and slightly thicken the sauce. Serve the ossobuco topped with gremolata.

Recipe tips and FAQs

  • Serving suggestions — traditionally served with Risotto alla Milanese. It also pairs beautifully with creamy polenta, mashed potatoes or any risotto; don’t forget crusty bread to soak up the sauce.
  • Gremolata — easy to prepare in two minutes: finely chop fresh parsley and garlic, grate lemon zest, mix and scatter over the veal just before serving.
  • Flouring the veal — dredging the shanks in flour helps thicken the sauce as it cooks.
How do I stop the veal from falling apart?

If you prefer the shanks to stay intact for presentation, tie each shank with kitchen string after browning. The meat will still become very tender and may begin to loosen from the bone toward the end of cooking.

Can I use beef instead?

Yes. If veal is unavailable, beef shanks are a suitable substitute but will produce a stronger, beefier flavor.

Can I prepare it in advance?

Yes. Ossobuco reheats well and often tastes better the next day. Store in the fridge for 2–3 days and reheat gently before serving.

What can I do with leftovers?

Reheat and serve with your chosen side, or shred the leftover meat into the sauce and toss with pasta for another meal.

Can I freeze it?

Yes. Freeze cooled ossobuco in suitable containers or freezer bags. Thaw thoroughly before reheating and serving.

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 tried this Ossobuco recipe, please rate it or leave a comment — feedback is always appreciated. Follow the blog or subscribe to the newsletter for more authentic Italian recipes and tips.

Step By Step Photos Above

Most of our recipes include step-by-step photos and helpful tips to make them successfully 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 a tomato and white wine sauce until the meat is tender. Served with saffron risotto and topped with gremolata, it’s the ultimate comforting meal.

Equipment

  • kitchen string (optional)

Ingredients

  • 4 bone-in veal shanks, about 1 inch / 2.5 cm 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 low-sodium chicken stock (500 ml)
  • 1 cup dry white wine (125 ml)
  • Salt and pepper, to taste
  • 1–2 tbsp olive oil
  • Gremolata (finely chopped parsley, lemon zest and garlic) for serving

Instructions

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

Optional step – presentation only

  • Tie each shank with kitchen string after browning to keep them intact while cooking.

Make the sauce

  • In the same pan, add more olive oil if needed and sauté carrot, celery and onion over medium heat until softened but not browned. Add garlic and cook 1 minute more.
  • Add the white wine and reduce by half. Stir in the chicken stock and tomato paste.
  • Add the herbs and 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.
  • Serve the ossobuco topped with gremolata.

Notes

  • Serving suggestions: serve with saffron risotto, creamy polenta, mashed potatoes or crusty bread.
  • Gremolata: finely chop parsley and garlic and grate lemon zest; sprinkle over the ossobuco just before serving.
  • Flouring: dusting the veal in flour helps the sauce thicken as it cooks.
  • Storage: leftovers keep in the fridge 2–3 days and can be frozen; thaw completely before reheating.

Helpful Info for All Recipes

  • Extra virgin olive oil is used unless stated otherwise.
  • All vegetables are medium sized unless noted.
  • Recipes are tested using a fan (convection) oven where applicable.

Nutrition

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

Nutrition information is an approximation.

Did you try this recipe?
Leave a comment below!