Pat the beef cubes dry with paper towels and season all over with the salt and pepper.
Heat the olive oil in a large Dutch oven over medium-high heat until shimmering. Add the beef in a single layer, working in 2 to 3 batches, and sear undisturbed 3 to 4 minutes per side until deeply browned. Transfer to a plate.
Add the onion and cook 4 to 5 minutes until softened. Add the garlic and cook 30 seconds. Stir in the carrots and celery and cook 2 minutes more.
Pour in 1 cup of the beef broth and scrape the bottom of the pot thoroughly until no browned bits remain.
Return the beef and any accumulated juices to the pot. Add the remaining 3 cups broth, tomato paste, Worcestershire sauce, bay leaves, and thyme. Bring to a boil, then reduce the heat to a bare simmer. Cover and cook 1 hour, stirring occasionally.
Stir in the potatoes. Cover and continue simmering 60 to 90 minutes, until the beef pulls apart easily under a fork.
Remove and discard the bay leaves. Whisk the cornstarch and cold water into a smooth slurry, stir it into the stew, and simmer uncovered 3 to 5 minutes until thickened.
Remove from the heat, stir in the frozen peas, and let them warm through 5 minutes.
Taste and adjust salt and pepper. Rest 10 minutes before serving.