Sprinkle both sides of the veal very generously with salt and pepper.
Heat olive and vegetable oils in a large dutch oven over high heat. Add veal and sear on both sides so it has a brown crust, about 3-4 minutes each side. Remove veal to a plate.
Turn heat down to medium low and add onion, carrots, and celery. Cook on low heat for 8 minutes, until onion is translucent and slightly browned, then add garlic and cook for 1 minute.
While the veggies are cooking, tie some twine around each piece of veal if you want it to hold together for presentation purposes. It will fall apart during cooking. This step is optional.
Add crushed tomatoes, broth, tomato paste, thyme, and bay leaves. Stir well, then return veal to the pot, place lid on and adjust the heat so the cooking liquid is at a gently bubbling simmer, around medium low. Cook until tender enough to be pried apart with forks; check at 1 and a half hour then every 10-15 minutes after until tender.
To make Gremolada: Place the parsley leaves on a cutting board. Top with garlic and lemon zest. Finely chop the parsley together with the garlic and lemon. Transfer to a small serving bowl and set aside.
Use a slotted spoon to remove veal into a large bowl, cover with foil to keep warm. Pour cooking liquid and veggies into a blender and blend until smooth, then pour back into pot and let simmer on medium for 10 minutes until reduced slightly and thickened. Adjust salt and pepper to taste.
Place a piece of Osso Buco on the serving plate, spoon sauce over, then top with gremolada. Serve with risotto alla Milanese or mashed potatoes.