Here's the recipe that I use for osso buco:
1/2 c. extra virgin olive oil
1 leek, white part only, washed, trimmed, and minced
3 medium carrots, peeled, trimmed, and minced
2 ribs celery, trimmed and minced
2 sprigs fresh rosemary
2 leaves fresh sage
1 2"-strip lemon zest
2 c. tomato sauce (or crushed San Marzano tomatoes)
2 c. beef stock
8 pieces osso buco
Salt and freshly ground black pepper
1 c. flour
Preheat oven to 350F. Heat 1/4 cup of the oil in a large, heavy pot with cover over medium heat. Add leeks, carrots, celery, rosemary, and sage and cook, stirring, until vegetables are golden brown, about 15 minutes. Stir in lemon peel, tomato sauce, and broth. Remove from heat and set aside.
Meanwhile, generously season osso buco with salt and pepper, then dredge them in flour until lightly coated, shaking off excess flour. Heat remaining 1/4 cup oil in a large skillet over medium-high heat. Add osso buco and sear, turning once, until well browned on each side, about five minutes per side. Place veal shanks in pot with vegetables, cover, and transfer to oven. Cook until meat is fork tender and falling off the bone, about 2 hours. Serve with Risotto alla Milanese.
I generally only cook the osso buco about 1h 45m to 1h 50m, turn the oven off, and leave it in the closed oven until ready to serve. It will stay warm for several hours and the flavours will come together better as the meat rests. You can also prepare this in the morning/afternoon and reheat in the oven just before serving.
Veal stock could be substituted and would add an extra richness in flavour, in my opinion. There's a butcher shop in town that prepares veal stock and freezes it, so it's easy to get here.