Preheat oven to 325°F. Pat the short ribs dry and season evenly with salt and pepper.
Heat olive oil in a Dutch oven over medium-high heat. Sear ribs on all sides until deeply browned, about 3–4 minutes per side; remove and set aside.
Add onion, carrots, and celery to the pot and cook until softened and lightly browned, about 5–7 minutes. Stir in garlic and tomato paste; cook until fragrant and slightly darkened.
Pour in red wine, scraping up browned bits from the bottom. Simmer for 5 minutes until slightly reduced.
Add beef broth, thyme, rosemary, and bay leaves. Return ribs to the pot; liquid should come about ¾ up the sides of the meat.
Cover and transfer to the oven. Braise for 2½–3 hours, until the meat is fork-tender and pulling away from the bone.
Remove ribs and skim excess fat from the surface of the sauce. Simmer sauce uncovered on the stovetop if needed until slightly thickened.
Return ribs to the sauce and spoon over the top before serving.