Pat the beef cubes dry with paper towels, then season generously with salt and pepper. Toss with flour until evenly coated.
Heat olive oil in a large Dutch oven over medium-high heat. Working in batches, brown the beef on all sides (about 8 minutes total). Don't overcrowd the pot! Transfer browned beef to a plate and set aside.
Reduce heat to medium and add the onion to the pot. Cook for 5 minutes until softened, then add garlic and cook for 1 minute more.
Stir in the tomato paste and cook for 2 minutes. Pour in the wine and scrape up all those delicious browned bits from the bottom of the pot.
Return the beef to the pot along with beef broth, bay leaves, and thyme. Bring to a boil, then reduce heat to low, cover, and simmer for 1 hour and 30 minutes.
Add the carrots, potatoes, and celery. Continue simmering covered for another 45-60 minutes until the beef is fork-tender and vegetables are cooked through.
Remove bay leaves and taste for seasoning. Adjust salt and pepper as needed. Garnish with fresh parsley and serve with crusty bread. Store leftovers in the fridge for up to 4 days—trust me, you'll want those leftovers!