Preheat the oven to 325°F. Pat the short ribs dry and season generously with salt and pepper.
Heat the oil in a heavy Dutch oven over medium-high heat. Sear the ribs on all sides until deeply browned, about 3–4 minutes per side. Work in batches if needed. Remove ribs and set aside.
Lower the heat to medium. Add the onion, carrots, and celery and cook until softened and lightly golden, about 5–7 minutes. Add the garlic and cook just until fragrant, about 30 seconds. Stir in the tomato paste and cook for another minute or two.
Pour in the beef broth, Worcestershire sauce, and balsamic vinegar, scraping up all the browned bits from the bottom of the pot.
Nestle the ribs back into the pot and add the thyme, rosemary, and bay leaf.
Cover tightly and transfer to the oven. Cook for 2½–3 hours, until the ribs are fork-tender and pulling away from the bone.
Remove the ribs and keep them warm. Place the pot back on the stove over medium heat and simmer the sauce uncovered for 10–15 minutes, until reduced and glossy.
If you want it extra luxurious, mash a few of the cooked carrots into the sauce. Taste and adjust seasoning.
Notes
Make-ahead: make it a day ahead, cool, and refrigerate in the pot. Reheat gently in the oven or on the stove.