Pat the veal shanks dry and season generously with salt and freshly ground black pepper, then dredge lightly in flour, shaking off the excess.
Heat the olive oil in a heavy Dutch oven over medium-high heat. Brown the shanks on both sides, about 4 minutes per side, then transfer to a plate.
Reduce the heat to medium. Add the onion, carrot, and celery and cook until softened, about 6 minutes. Stir in the garlic and cook 1 minute more.
Pour in the white wine, scraping up the browned bits from the bottom, and simmer until reduced by half, about 3 minutes.
Return the shanks to the pot. Add the broth, crushed tomatoes, bay leaf, and thyme, and bring to a gentle simmer.
Cover and braise in a 325F (165C) oven for 1 1/2 to 2 hours, until the meat is fork-tender and nearly falling off the bone.
Stir together the parsley, lemon zest, and garlic for the gremolata. Spoon the osso buco onto plates, sprinkle generously with gremolata, and serve hot.