Preheat your oven to 325°F (163°C).
Season the beef shanks with salt and pepper on all sides.
In a large, heavy-bottomed pot or Dutch oven, heat the olive oil over medium-high heat. Add the beef shanks and sear them for about 4-5 minutes on each side until browned. Remove the shanks and set them aside.
In the same pot, add the diced onion, carrots, and celery. Sauté for about 5-7 minutes until the vegetables are softened. Add the minced garlic and cook for another minute until fragrant.
Pour in the white wine, scraping the bottom of the pot to deglaze. Let it simmer for about 2-3 minutes.
Stir in the diced tomatoes, beef broth, thyme, and bay leaf. Return the beef shanks to the pot, ensuring they are submerged in the liquid.
Cover the pot with a lid and transfer it to the preheated oven. Braise for 2.5 to 3 hours, or until the meat is tender and falling off the bone.
Once done, remove the pot from the oven. Discard the bay leaf and stir in the lemon zest.
Serve the osso bucco hot, garnished with fresh parsley.