Pat beef cubes dry with paper towels. Season all sides with salt and pepper.
Heat oil in a Dutch oven over medium-high heat. Brown beef in two batches, 3–4 minutes per side, until deep brown crust forms. Transfer to a plate.
In the same pot, sauté onion over medium heat for 5 minutes until softened. Add garlic and cook 1 minute more.
Add tomato paste and stir into onions. Cook 2 minutes. Pour in broth and water, scraping the bottom to release all browned bits. Add Worcestershire sauce, bay leaves, thyme, salt, and pepper.
Return beef and juices to the pot. Bring to a boil, then reduce to a low simmer. Cover and cook 45 minutes.
Add carrots, potatoes, and celery. Cover and simmer 35–40 minutes until vegetables are tender and beef pulls apart easily.
Mix cornstarch and cold water in a small bowl. Stir into the simmering stew and cook uncovered 5–8 minutes until broth thickens.
Remove bay leaves. Taste and adjust salt. Rest 5 minutes before serving.