Mouthwateringly tender osso buco slow-cooked in a tomato and white wine sauce that is loaded with savory richness? Yes please! These fall off the bone veal shanks are served with creamy saffron risotto and topped with a zesty gremolata, a classic Italian dish popping with flavorful ingredients! It's comforting Italian cuisine that is cozy enough for a Sunday dinner, yet special enough for the holidays.

This post was originally created in December 2017, but has since been updated with better content, updated photography, and step-by-step instructions in post. Thanks for supporting Sweet Tea + Thyme!
Cozy season begs for slow cooking, y'all. I'm sure you're sicka me talking about it but I can't help it! It's my favorite time of year; my soul thrives in the cold weather, and the food is definitely helping with that. There's nothing like slow braising stews and whipping up soup on a blustery, cold day. Talk about comfort!
Speaking of cozy, what could be better than updating one of my all-time-favorite Italian dishes: Osso Buco alla Milanese!
This post may contain Affiliate Links. Please see my Full Disclosure Policy for more details.
Jump to:
Ossobuco alla Milanese
Osso buco translates to 'bone with a hole' and originates from the Lombardy region in northern Italy. It's very popular in Milan, where it's traditionally served with risotto alla milanese and gremolata -- an herby, lemony topping.
This recipe takes slow cooking and makes it luxurious! It's all about those veal shanks that slowly braise in a rich stew packed with aromatics, breaking down all that connective tissue until they are fork tender, then turning it up Milanese style by laying it right on a bed of golden risotto, seasoned perfectly with saffron and parmesan cheese. It's the ultimate mix of fancy and cozy!

I know so many people are terrified of messing up a risotto (thanks, Gordon Ramsay), but it's not as hard as reality tv makes it out to be. We'll be going step by step together in this post with process shots, so no matter if this is for a date night or a holiday meal, we're going to make the most fabulous osso buco.
Ingredients Needed
Full ingredients, measurements, and printable instructions are in the recipe card at the bottom of this post.

For the Osso Buco
- Bone-in veal shanks - this cut of veal is like the ankle of the high legs. We're looking for milk-fed veal shanks, cross-cut with the bone and marrow exposed.
- Tomato Paste and Crushed Tomatoes - this is the more modern version and you can omit them if you're not a tomato fan.
- White Wine - always use wine you'd drink, and when cooking use a dry white wine, not sweet. I like using rosé if it's what I have on hand, I just feel like it is a perfect midpoint between the richness of beef and lightness of the veal and veggies.
- Soffritto and Garlic - soffritto is a mix of carrot, onion, and celery -- just like a French mirepoix.
- Fresh Herbs - fresh thyme, a small sprig of rosemary, a touch of oregano, and a bay leaf to help lift the richness!
- Beef Broth - you'll want broth specifically, not stock this time!
For the Risotto alla Milanese

- Arborio Rice - this is classic risotto rice. It's a short grain rice with a lot of natural starch. That starch is key to risotto's creaminess.
- Saffron - please buy real saffron strands from a reliable source, there are a lot of phonies out there! I buy mine from Zaran Saffron, but you can also find them at spice shops.
- Chicken Broth
- Parmesan Cheese - use a wedge of parm, you can find them just about anywhere now. DON'T USE THE GREEN CAN STUFF or I will tell the nonnas! (Kidding! But they may find you anyway.)
- Extra Virgin Olive Oil and Butter
For the Gremolata

- Fresh Chopped Parsley - I know people think parsley doesn't have flavor but it does! It's herby and peppery, and it's a great contrast to all the richness of our dish.
- Lemon Zest
- Garlic
How to Make Ossobuco Milanese

Step 1a | Cut the outer fascia of the veal shanks and tie them together. This connective tissue will not break down easily, so it needs to be cut.

Step 1b | I suggest tying the shanks with twine so they don't fall apart.

Step 2 | Dredge the shanks in flour, and place the veal into the pan to sear in olive oil until they get a brown crust, then remove them onto a plate.

Step 3 | Sauté the onions, carrot, and celery, season with salt, and cook until they begin to gain color.

Step 4 | Add the herbs and tomato paste in now. We want to infuse the base of the osso buco sauce with plenty of flavor! Add the garlic at the end of cooking the soffritto, we don't want to burn the garlic.

Step 5 | Add the wine to deglaze the pan, scraping up all the fond (aka the brown bits) and adding that flavor into the sauce.

Step 6 | Stir in the beef broth and crushed tomatoes, then add the veal shanks back to the pan. Cover with for 2 hours, turning the meat every 30 minutes so it doesn't stick to the bottom and burn.

Step 7 | After 1.5 hours, remove the lid and let simmer for the last 30 minutes to reduce and thicken the sauce.
How to Make Risotto alla Milanese

Step 1 | Melt the butter in some of the olive oil in a wide saute pan. Saute the onions until they turn golden. While doing that, get a small saucepan over medium-low heat and add in the chicken broth. We need that broth warm!

Step 2 | Stir in the arborio rice. We want to coat the rice in the butter and oil and give it a little toasting. Add in the saffron so it can infuse the oil with its flavor.

Step 3a | Pour in ½ cup of chicken broth and stir until the rice and broth are mixed together, no dry spots. You don't need to stir continuously, but don't go run off somewhere. You'll need to stir in more chicken broth before the pan dries out.

Step 3b | This is what it looks like when you need more broth. There's no more liquid pooling at the bottom when you move the rice; the rice soaked it right up and is asking for more!

Step 4 | Continue to stir in broth and simmer until the rice absorbs all of your chicken broth and the grains no longer have an opaque center. You can see how creamy it is. That's what we want!

Step 5 | At the end of cooking, whisk in parmesan cheese. It will thicken up as it sits, so add a little more broth if you like to give it that 'wave'.
Make the Gremolata and Serve

Step 1 | Finely chop the parsley and garlic, and grate the lemon zest. Grind the three ingredients in a mortar and pestle to really break open the cells and get more flavor.

Step 2 | Sprinkle the gremolata on top of the risotto and osso buco to serve!
Variations and Pro Tips
- Skip the Risotto - make this a simply cozy meal by serving the osso buco over creamy polenta or fluffy mashed potatoes.
- Always slice up that fascia wrapped around the meat to allow the shanks to fully cook without the fascia tightening and curling up.
- Tie the shanks with twine - this keeps the meat from literally falling off the bone while cooking, making for a stunning presentation.
- Can't find veal? Use beef shanks! The flavor will be beefier, of course, but still just as delicious.
- Add a parm rind to the sauce - the flavor of the parm will infuse into the sauce while it cooks. Ask for a rind at the cheese counter, they often are cheap or free!
Storage and Reheating
Store the osso buco with its sauce in an airtight container, and store the risotto in a separate container in the fridge for up to 4 days.
Rewarm them in a microwave safe bowl with a splash of broth stirred into the risotto so it doesn't get dry.

Equipment
Equipment I Used
My Favorite Braiser
I love a wide, shallow braiser to be able to sear and cook stews in easily, but if you have one of those big, wide, oval dutch ovens go for it!

FAQs
Yes! In fact it's eaten with a utensil in Italy called the tax collector, haha! The marrow is the most prized part of the osso buco; I love eating it spread on some toasted baguette slices or garlic bread.
Absolutely! Osso Buco tastes even better the next day as the flavors continue to develop. To make ahead, braise the shanks as directed and let them cool to room temperature before storing them in an airtight container with the sauce. Reheat gently on the stovetop or in the oven at 300°F (150°C) until warmed through.
Tip: If you're serving it with Risotto alla Milanese, prepare the risotto fresh for the best texture and flavor.
Look for a dry Pinot Grigio, Sauvignon Blanc, or dry Vermouth for the best results. If you prefer a deeper flavor, a dry red wine like Chianti or Pinot Noir can also work beautifully, but they can overpower the veal (save them for beef shanks!)
For a non-alcoholic option, substitute the wine with an equal amount of chicken or vegetable broth mixed with a splash of white wine vinegar or apple cider vinegar.
More Comfy Cozy Recipes to Try
Craving more cozy recipes? Sign up for the Sweet Tea & Thyme newsletter, save this recipe with the Pin button. If you whip it up, tag me (@sweet_tea_thyme on IG/@sweetteaandthyme on TikTok) and don’t forget to leave a star rating and note below, it helps more than you know, friend.

Osso Buco alla Milanese
Equipment
- Braiser
- large skillet
Ingredients
Osso Buco
- 2 veal shanks, 1 inch thick, fascia cut and each tied with twine
- ¼ cup all purpose flour
- 2 teaspoon kosher salt
- 1 teaspoon freshly ground black pepper
- ¼ cup olive oil, divided
- ½ yellow onion, small dice
- 1 carrot, small dice
- 1 celery stalk, small dice
- 3 garlic cloves, minced
- 3 sprigs fresh thyme, stripped from stem
- 1 sprig rosemary, leaves minced
- 2 sprigs oregano, leaves minced
- 2 tablespoon tomato paste
- 14 oz canned crushed tomatoes
- 2 cups beef broth
- 2 bay leaves
Risotto alla Milanese
- 5 cups chicken broth, keep on a stove burner
- 2 tablespoon olive oil
- 2 tablespoon butter
- ½ yellow onion, small dice
- 1 hearty pinch saffron strands
- 1 cup arborio rice
- ½ cup parmesan cheese, finely shredded
- kosher salt and black pepper, to taste
Gremolata
- ⅓ cup fresh Italian parsley, chopped finely
- 2 teaspoon lemon zest, finely grated
- 1 garlic clove, minced
Instructions
Braise Osso Buco
- Sprinkle both sides of the veal very generously with salt and pepper, then dredge both sides in the flour.2 veal shanks, ¼ cup all purpose flour, 2 teaspoon kosher salt, 1 teaspoon freshly ground black pepper
- Heat half of the olive oil in a large dutch oven or cast iron braiser over medium-high heat. Add the veal shanks to the pot and sear on both sides so it has a brown crust, about 3 minutes each side. Remove the shanks to a plate.¼ cup olive oil
- Turn heat down to medium and add the rest of the olive oil, onion, carrots, and celery. Cook for 8 minutes, until onion is translucent and slightly browned.¼ cup olive oil, ½ yellow onion, 1 carrot, 1 celery stalk
- Stir in the tomato paste and herbs and let that cook for a minute, stirring all the while, before adding the minced garlic and cooking for another minute.3 garlic cloves, 3 sprigs fresh thyme, 1 sprig rosemary, 2 sprigs oregano, 2 tablespoon tomato paste
- Add crushed tomatoes, beef broth, and bay leaves. Stir well, then place the veal in the pot/braiser. Place the lid on and adjust the heat to medium low so the cooking liquid is at a gently bubbling simmer. Flip the veal shanks with tongs or a fish spatula every 30 minutes for 1.5 to 2 hours. You want the veal to be shreddable with a fork.14 oz canned crushed tomatoes, 2 cups beef broth, 2 bay leaves
- At the last 30 minutes, remove the lid, flip the veal shanks again, and simmer to reduce the sauce down. During the last 30 minutes of the osso buco simmering, make the risotto and gremolata.
Risotto alla Milanese
- Warm the chicken broth in a saucepan over low heat. Keep it on the burner, we want that broth to stay warm the entire time we use it.5 cups chicken broth
- In a saute pan or large skillet over medium heat, melt the butter with the olive oil and sauté the diced onions for 2-3 minutes, just until golden brown.2 tablespoon olive oil, 2 tablespoon butter, ½ yellow onion
- Add the saffron and arborio rice to the sauteed onions. Stir with a wooden spoon to coat the grains of rice in the butter and oil and fry/toast the rice for a couple of minutes. If you feel your pan is dry, don't be scared to add a little drizzle of oil or another small scoop of butter to help you out.1 hearty pinch saffron strands, 1 cup arborio rice
- Pour ½ cup of the warm chicken broth into the risotto pan. Stir well so there are no dry spots in the pan. Stir well and let sit for a few minutes, until the rice has absorbed most of the liquid, I'd say 90% of it, then stir in another ½ cup of broth.
- Repeat the last step until all the broth is used, and the risotto is golden in color with a creamy texture and the rice grains no longer have an opaque center. Taste for doneness, don't be afraid to splash some more broth or water in and let the rice come to your desired doneness.
- Once the risotto is cooked, whisk in the shredded parmesan cheese until it's fully incorporated. Taste and season with salt and pepper as needed.½ cup parmesan cheese, kosher salt and black pepper
Gremolata
- Mash together the chopped parsley, lemon zest, and minced garlic in a mortar and pestle or just mix them together in a small bowl⅓ cup fresh Italian parsley, 2 teaspoon lemon zest, 1 garlic clove
Serve
- Spoon a bed of the risotto on your serving plate. Place a piece of Osso Buco on the serving plate, the spoon sauce onto the ossobuco, then sprinkle gremolata over it all. Serve hot!

















Leave a Reply