Preheat oven to 300°F. (If using slow cooker, skip preheating and follow the stovetop searing steps.)
Pat roast dry with paper towels, then season generously with salt and pepper. Heat olive oil in a large Dutch oven over medium-high heat. Sear roast on all sides until deeply browned, about 4–5 minutes per side.
Remove roast and set aside. In the same pot, add onions, carrots, and celery. Cook for 3–4 minutes until slightly softened. Stir in tomato paste and garlic, cooking until fragrant.
Pour in red wine (or broth) and scrape the browned bits from the bottom.
Return roast to the pot. Add potatoes, broth, herbs, and bay leaves. Liquid should come halfway up the roast. Cover with lid and transfer to oven.
Roast for 3–4 hours, until beef is fork-tender and easily shreds. Check occasionally to ensure there is enough liquid; add extra broth if needed.
Remove herbs and bay leaves. Slice or shred beef, then spoon gravy and vegetables over top. Serve hot.