Preheat the oven to 325°F.
Pat beef shanks dry with paper towels. Season generously with 1½ teaspoons salt and ½ teaspoon pepper. Tie kitchen twine tightly around each shank to help them hold shape during cooking (optional).
Place the flour in a shallow dish. Dredge shanks in flour, shaking off excess.
Heat the olive oil in a large Dutch oven over medium-high heat.
When oil is hot, add shanks and brown on all sides until deeply golden, about 3-4 minutes per side. Remove to a plate.
Reduce heat to medium. Add diced onion, carrot, and celery to the pot. Cook for 5 minutes, stirring occasionally, until onions are translucent.
Add minced garlic and cook for 1 minute until fragrant.
Add white wine to deglaze, scraping up any browned bits from the bottom of the pot. Simmer until wine reduces by half, about 5 minutes.
Stir in tomato paste until well combined. Add chicken broth, thyme sprig, and bay leaf. Season with remaining salt and pepper.
Return the shanks to the pot. The liquid should come about halfway up the sides of the meat.
Bring to a simmer, cover, and transfer to the oven.
Braise for 2-2½ hours, turning meat occasionally, until very tender when pierced with a fork.
Once the meat is tender, remove from the oven. Transfer shanks to a serving plate and tent with foil.
Simmer braising sauce over medium heat until slightly thickened (if needed).