Heat oil in a large Dutch oven over medium-high heat. Season beef with a pinch of salt and pepper. Working in two batches to avoid crowding, sear beef cubes until deeply browned on all sides, about 3–4 minutes per batch. Transfer browned beef to a plate and set aside.
Reduce heat to medium. Add diced onion and a pinch of salt to the same pot. Cook, stirring occasionally, until softened and translucent, about 5 minutes. Stir in minced garlic and tomato paste, cooking for 1 minute until fragrant.
Pour in about 1/2 cup of the beef broth and use a wooden spoon to scrape up any stuck-on fond. Then add the remaining broth, Worcestershire sauce, thyme, bay leaves, 1/2 teaspoon black pepper, and 1 teaspoon salt. Return the browned beef and any accumulated juices to the pot. Bring to a boil.
Once boiling, add carrots and potatoes. Reduce heat to low, cover with lid slightly ajar, and let simmer gently for 1 hour to 1 hour 15 minutes, or until beef is fork-tender and reaches an internal temperature of at least 145°F (63°C). Stir occasionally and check liquid level – add a splash of water if it reduces too quickly.
In a small bowl, whisk flour (or cornstarch) with cold water to make a smooth slurry. Slowly stir into the simmering stew. Continue to cook for 10–15 minutes, stirring gently, until the gravy has thickened to your liking. Discard bay leaves.
Taste and adjust salt and pepper. Ladle into warm bowls, sprinkle with fresh parsley, and serve immediately.