Season the veal shanks generously with salt and pepper, then dust lightly with flour, shaking off the excess.
Heat the olive oil and butter in a large heavy casserole over high heat. Brown the veal shanks on all sides until golden, about 3–4 minutes per side. Remove and set aside.
Reduce heat to medium. In the same pan, sauté the onion, carrot and celery for 5 minutes until softened. Add the garlic and cook for 1 minute more.
Pour in the white wine and scrape up any browned bits from the base of the pan. Simmer for 3 minutes.
Add the crushed tomatoes and stock. Return the veal shanks to the pan, standing them upright. The liquid should come about halfway up the shanks.
Cover and braise over low heat for 1.5 hours, turning the shanks once halfway through, until the meat is very tender and falling off the bone.
Make the gremolata: combine the lemon zest, garlic and parsley. Set aside.
Serve the osso buco over risotto Milanese or polenta, spooning the braising sauce over. Scatter the gremolata on top at the last moment.