Preheat the oven to 325°F. Season the veal shanks with salt and pepper, then dust with flour, shaking off any excess.
In a large Dutch oven, heat the olive oil and butter over medium-high heat. Add the veal shanks and brown on all sides, about 3-4 minutes per side. Remove the shanks and set aside.
In the same pot, add the onion, carrot, celery, and garlic. Sauté until the vegetables are softened, about 5-7 minutes.
Pour in the white wine, scraping up any browned bits from the bottom of the pot. Let it simmer for about 2-3 minutes.
Return the veal shanks to the pot. Add the beef broth, diced tomatoes, thyme, and bay leaf. Bring to a simmer.
Cover the pot and transfer it to the preheated oven. Cook for 2 to 2.5 hours, or until the meat is tender and falling off the bone.
While the osso buco is cooking, prepare the gremolata by mixing the lemon zest, parsley, and minced garlic in a small bowl.
Once done, remove the pot from the oven and discard the bay leaf. Serve the osso buco hot, topped with gremolata.