Remove ribs from fridge and let sit at room temperature for 30 minutes. Pat completely dry with paper towels, then season all sides with 2 teaspoons salt and 1 teaspoon pepper. Lightly dust with 2 tablespoons flour, shaking off excess.
Preheat oven to 325°F (165°C). Heat 2 tablespoons olive oil in Dutch oven over medium-high heat. Working in batches, sear ribs for 3-4 minutes per side until deeply browned. Transfer to a plate and set aside.
Reduce heat to medium. Add onion, carrots, and celery to the pot and cook 6-8 minutes until softened. Add garlic and cook 1 minute more, stirring constantly. Stir in tomato paste and cook 2-3 minutes until darkened.
Pour in red wine and scrape up browned bits from bottom of pot. Bring to a simmer and let bubble 3-4 minutes to cook off alcohol. Add beef broth, Worcestershire sauce, thyme, rosemary, and bay leaves.
Return ribs to the pot, nestling them into the liquid. Bring to a simmer on stovetop, cover tightly with lid, and transfer to oven. Braise for 2 hours without opening the oven door.
After 2 hours, remove pot from oven and gently stir. Cover and return to oven for another 45 minutes to 1 hour, until meat is fork-tender and nearly falling off the bone.
Transfer ribs to a serving platter. Discard herb sprigs and bay leaves. Skim fat from surface of sauce. Bring sauce to a boil on stovetop, then reduce heat and simmer 10-15 minutes until thickened and glossy.
For a smoother sauce, strain through a fine-mesh strainer. Taste and adjust seasoning. Return ribs to pot with sauce, spoon over ribs, and garnish with fresh herbs. Serve hot.