Pat the short ribs dry with a paper towel. Season generously with salt and pepper.
In a large Dutch oven or heavy pot, heat the olive oil over medium-high heat. Add the short ribs and sear them until browned on all sides, about 3-4 minutes per side. You may need to do this in batches. Remove the ribs and set aside.
In the same pot, add the chopped onion, carrots, and celery. Cook for 5-7 minutes until softened and caramelized. Add the minced garlic and cook for another minute.
Stir in the tomato paste and cook for 2 minutes, allowing it to deepen in color.
Pour in the red wine, scraping up any browned bits from the bottom of the pot. Bring the wine to a simmer and let it reduce by half, about 10 minutes.
Return the short ribs to the pot and add the beef broth, thyme, rosemary, and bay leaves. The liquid should cover about ⅔ of the ribs.
Bring the pot to a simmer, then cover it and transfer to a preheated 325°F (160°C) oven. Braise for 2.5 to 3 hours, or until the meat is tender and easily falls off the bone.
Remove the pot from the oven and take out the short ribs. Strain the sauce through a fine-mesh sieve, discarding the solids. Skim off excess fat from the sauce and simmer to thicken if needed.
Serve the short ribs with the sauce spooned over the top. Pair with creamy mashed potatoes, polenta, or crusty bread.