Pat the beef dry with paper towels and season with salt and pepper.
Heat olive oil in a large Dutch oven or heavy-bottomed pot over medium-high heat. Brown the beef in batches on all sides, then remove from the pot and set aside.
Add the chopped onion to the pot and cook until softened, about 5-7 minutes. Add the minced garlic and cook for another minute until fragrant.
Stir in the tomato paste and cook for 1-2 minutes, stirring constantly.
Pour in the red wine (if using) and scrape up any browned bits from the bottom of the pot. Let it simmer for 2-3 minutes.
Return the beef to the pot. Add the beef broth, carrots, potatoes, thyme, and rosemary. Bring to a simmer.
Reduce the heat to low, cover, and simmer for 2.5 to 3 hours, or until the beef is very tender.
In a small bowl, whisk together the flour and water to create a slurry. Stir the slurry into the stew to thicken the gravy. Cook for another 5-10 minutes, stirring, until thickened.
Taste and adjust seasoning with salt and pepper if needed. Serve hot.
Notes
For an even richer flavor, you can sear the beef the day before and refrigerate it in the marinade.