Pat beef dry with paper towels and season generously with salt and pepper. Heat 2 tbsp olive oil in a large Dutch oven over medium-high heat. Working in batches, sear beef cubes until deeply browned on all sides, about 3-4 minutes per batch. Transfer to a plate.
Reduce heat to medium. Add remaining 1 tbsp oil and onion. Cook until softened, 5 minutes. Add garlic, cook 1 minute. Stir in tomato paste and cook, stirring constantly, for 2 minutes until it darkens slightly.
Pour in red wine, scraping up browned bits from the bottom of the pot with a wooden spoon. Bring to a simmer and cook until liquid is reduced by half, about 4-5 minutes.
Sprinkle flour over the onion mixture, stir and cook for 1 minute. Gradually whisk in beef broth and water. Bring to a simmer, stirring until slightly thickened. Return beef and any accumulated juices to the pot. Add thyme sprigs and bay leaves.
Bring stew to a gentle boil, then reduce heat to low. Cover partially with a lid and simmer for 1.5 hours, or until beef is almost tender, stirring occasionally. Ensure beef reaches an internal temperature of at least 145°F (63°C) for safety.
Add carrots, celery, and potatoes. Continue simmering, covered partially, for another 40-45 minutes, or until vegetables are fork-tender and beef is melt-in-the-mouth.
Discard thyme stems and bay leaves. Stir in peas and cook just until heated through, about 2 minutes. Taste and adjust seasoning. Ladle into bowls, garnish with parsley, and serve hot.