Osso buco is the Milanese braise that turns veal or beef shanks into pure luxury: browned shanks slow-simmered with onion, carrot, celery, tomato paste, and wine until the meat slips from the bone. What makes this version special is the gremolata — parsley, pine nuts, garlic, and lemon scattered over the top at the last second. The marrow in the center enriches the sauce into something unforgettable.
SERVES 6
There are many reasons to love osso buco, one being the delectable marrow in the center that adds a delicious richness to the sauce. What makes this dish for me, though, is the gremolata, a garnish typically made from chopped parsley, garlic and lemon zest. I love how the fresh flavors of the herbs brighten up a luscious meal.
Traditionally this dish is made with veal, but if you don’t have access to humanely raised veal, then beef shanks will work, too!
INGREDIENTS
FOR THE GREMOLATA:
1 cup/40 g fresh flat-leaf parsley
2 tbsp/20 g pine nuts
2 small cloves garlic or 1 large clove
zest of 1 lemon
1 tbsp/15 ml fresh lemon juice
2 tbsp/30 ml extra-virgin olive oil
¼ tsp sea salt
¼ tsp pepper
2 lbs/900 g veal shanks or beef shanks
sea salt and pepper
3 tbsp/43 g ghee
1 large onion, chopped
4 cloves garlic, crushed
2 carrots, peeled and chopped
2 ribs celery, chopped
2 tbsp/30 ml tomato paste (preferably from a jar)
½ cup/120 ml white wine
1 cup/235 ml Beef Broth
COOKING INSTRUCTIONS
To make the gremolata, combine all of the ingredients (parsley, pine nuts, garlic, lemon zest, lemon juice, olive oil) in a food processor and pulse until well combined but still chunky. Adjust salt and pepper to taste. Set aside.
Generously season the veal with salt and pepper. Melt the ghee in a heavy-bottomed pan or a Dutch oven over medium heat. Add the shanks and cook until browned on all sides. Set veal aside and add onion to the pan. Cook until onions are tender, about 10 minutes. Add garlic, carrots and celery and cook until fragrant, about 5 minutes. Add the tomato paste, then add wine and use a wooden spoon to scrape up any brown bits from the bottom of the pan. Add the shanks back to the pan, along with the beef broth. Cover and simmer over low heat for 1½ hours or until meat is tender, occasionally basting the shanks. To serve, arrange the shanks on dinner plates, spoon a generous amount of sauce from the pan over them, and sprinkle them with gremolata.
Pro Tips
- Brown the shanks properly on all sides before braising — the fond that forms on the pan bottom is what gives the sauce its deep, savory backbone.
- Scrape up the browned bits with the wooden spoon after adding the wine; those caramelized juices dissolve into the braising liquid and flavor everything.
- Baste the shanks occasionally as they simmer — spooning the sauce over the exposed meat keeps the tops from drying out during the 1½-hour cook.
- Make the gremolata chunky, not puréed; the coarse texture of parsley, pine nuts, and lemon zest is the fresh counterpoint the rich braise needs.
- Traditional osso buco uses veal, but beef shanks work beautifully — look for thick-cut pieces with the marrow bone intact.
Frequently Asked Questions
What is gremolata?
The classic Milanese garnish of chopped parsley, garlic, and lemon zest. This version adds pine nuts for richness, and it's sprinkled over the finished braise to brighten every bite.
Can I make osso buco in advance?
Absolutely — it's famously better the next day. Cool the shanks in their sauce, refrigerate overnight, and rewarm gently before scattering the fresh gremolata on top.
What should I serve with osso buco?
Cauliflower mash or roasted root vegetables soak up the sauce perfectly. In Milan it's traditionally served with risotto alla milanese, but anything creamy and neutral works.
How do I know when the shanks are done?
After about 1½ hours of gentle simmering, the meat should be tender enough to pull away from the bone with a fork. If it resists, give it another 20 minutes rather than rushing it.
Recipe Card
Ingredients
Method
- zest of 1 lemon
- 1 tbsp/15 ml fresh lemon juice
- 2 tbsp/30 ml extra-virgin olive oil
- ¼ tsp sea salt
- ¼ tsp pepper
- 2 lbs/900 g veal shanks or beef shanks sea salt and pepper
- 3 tbsp/43 g ghee
- 1 large onion, chopped
- 4 cloves garlic, crushed
- 2 carrots, peeled and chopped
- 2 ribs celery, chopped
- 2 tbsp/30 ml tomato paste (preferably from a jar)
- ½ cup/120 ml white wine
- 1 cup/235 ml Beef Broth COOKING INSTRUCTIONS To make the gremolata, combine all of the ingredients (parsley, pine nuts, garlic, lemon zest, lemon juice, olive oil) in a food processor and pulse until well combined but still chunky.
- Adjust salt and pepper to taste.
- Set aside. Generously season the veal with salt and pepper. Melt the ghee in a heavy-bottomed pan or a Dutch oven over medium heat.
- Add the shanks and cook until browned on all sides.
- Set veal aside and add onion to the pan.
- Cook until onions are tender, about 10 minutes.
- Add garlic, carrots and celery and cook until fragrant, about 5 minutes.
- Add the tomato paste, then add wine and use a wooden spoon to scrape up any brown bits from the bottom of the pan.
- Add the shanks back to the pan, along with the beef broth.
- Cover and simmer over low heat for 1½ hours or until meat is tender, occasionally basting the shanks. To serve, arrange the shanks on dinner plates, spoon a generous amount of sauce from the pan over them, and sprinkle them with gremolata.




