Heat 2 tablespoon olive oil in a Dutch oven over medium-high heat. Pat veal shanks dry, season with salt and pepper. Sear each shank 4-5 minutes per side until deep golden brown. Remove and set aside.
4 veal shanks
Reduce heat to medium. Add diced carrots, celery, and onion to the same pot. Cook 5-7 minutes, stirring often, until vegetables soften and edges brown. Stir in minced garlic and tomato paste, cook 1 minute.
2 carrots, 2 stalks celery, 1 onion, 4 cloves garlic, 2 tbsp tomato paste
Pour in white wine and scrape up browned bits from the bottom with a wooden spoon. Simmer 2-3 minutes until wine reduces by half. Add beef or veal stock and return shanks to the pot so liquid comes halfway up the sides. Bring to a simmer, cover, then reduce heat to low.
1 cup dry white wine, 2 cups beef or veal stock, 4 veal shanks
Braise covered 1.5-2 hours, checking every 30 minutes to maintain a gentle simmer at 180-190°F. The meat is done when it pulls apart easily with a fork. Remove the lid during the last 15 minutes if sauce needs thickening.
4 veal shanks
Mix lemon zest, chopped parsley, and remaining minced garlic in a small bowl. Let shanks rest 10 minutes off heat. Serve each shank with sauce spooned over top and sprinkle gremolata just before plating.
1 unit lemon zest, 0.25 cup fresh parsley, 4 cloves garlic