Pat the veal shanks dry with paper towels. Season each shank with salt and pepper. Lightly dredge them in flour, shaking off any excess.
In a large heavy-bottomed pot or Dutch oven, heat the olive oil over medium heat. Add the veal shanks, making sure not to overcrowd the pot. Brown each side for about 3-5 minutes or until they get a nice golden color. Remove and set aside.
In the same pot, add the onion, carrots, and celery. Cook until the vegetables are softened, about 5-7 minutes. Add the minced garlic and sauté for another minute.
Pour in the white wine, scraping the bottom of the pot to lift up the browned bits. Allow the wine to simmer and reduce by half. Add the crushed tomatoes, beef broth, bay leaves, and thyme to the pot. Stir well.
Return the browned veal shanks to the pot, ensuring they are submerged in the sauce. Cover and let it simmer on low heat for about 1½ to 2 hours or until the meat is tender and falling off the bone.
While the veal is cooking, mix together the lemon zest, minced garlic, and chopped parsley. This is your gremolata.
Once the veal shanks are tender, discard the bay leaves and thyme sprigs. Plate each veal shank and spoon some sauce over the top. Sprinkle with gremolata before serving.