Pat beef cubes dry with paper towels. Season with salt and pepper, then toss with flour until evenly coated. Shake off excess flour.
In a large Dutch oven or heavy pot, heat 2 tablespoons olive oil over medium-high heat. Working in batches, add beef in a single layer and sear until deeply browned on all sides, about 3-4 minutes per side. Transfer seared beef to a plate.
Reduce heat to medium. Add the remaining 1 tablespoon oil, then onion and a pinch of salt. Cook until softened, about 5 minutes. Add garlic and cook 1 minute more. Stir in tomato paste and cook for 2 minutes to caramelize it slightly.
Pour in a splash of beef broth and scrape up all the browned bits from the bottom of the pot. Add the rest of the broth, Worcestershire sauce, thyme, and bay leaves. Return the beef and any accumulated juices to the pot.
Bring to a boil, then reduce heat to low, cover, and simmer gently for 1½ hours, or until the beef is just starting to become tender. Ensure the beef reaches an internal temperature of at least 145°F (63°C) for safety; for best tenderness, the stew will continue to cook to higher temperatures.
Stir in carrots, celery, and potatoes. Cover and continue simmering for another 30-40 minutes, until vegetables are fork-tender and beef is melt-in-your-mouth soft.
Discard bay leaves and thyme sprigs. Taste and adjust seasoning with salt and pepper. If the broth is too thin, simmer uncovered for a few minutes to thicken. Ladle into bowls, garnish with parsley.