01 - Set the oven to 325°F.
02 - Pat beef ribs dry and season evenly with salt and black pepper.
03 - Heat olive oil in a large oven-safe Dutch oven over medium-high heat. Sear ribs in batches until browned on all sides, about 2 to 3 minutes per side. Transfer ribs to a plate.
04 - In the same pot, add chopped onion, carrots, and celery. Cook for 5 minutes until softened. Add garlic and sauté for 1 additional minute.
05 - Stir in tomato paste and cook for 1 minute. Pour in red wine, scraping up browned bits from the bottom. Simmer for 3 to 4 minutes to reduce slightly.
06 - Add beef broth, thyme, rosemary, and bay leaves to the pot. Return ribs to the pot, ensuring they are mostly submerged.
07 - Bring mixture to a simmer, cover, and transfer to the oven. Cook for 2 to 2.5 hours until ribs are tender and fall-off-the-bone.
08 - Remove ribs and vegetables to a serving platter. Discard herb sprigs and bay leaves. Skim excess fat from the sauce and simmer uncovered on stovetop for 10 minutes to thicken if desired.
09 - Ladle sauce over ribs and serve immediately.