In a bowl, toss the beef cubes with flour, salt, and pepper to evenly coat them.
Heat the olive oil in a large pot or Dutch oven over medium-high heat.
Add the beef cubes in batches (to avoid overcrowding) and sear on all sides until browned, about 5-7 minutes per batch. Transfer the browned beef to a plate and set aside.
In the same pot, add the chopped onions and minced garlic (all 6 cloves). Cook for 3-4 minutes until softened and fragrant, scraping up any browned bits from the bottom of the pot.
Pour in the beef broth and red wine (if using) to deglaze the pot, stirring to loosen any bits stuck to the bottom. Add the tomato paste, Worcestershire sauce, bay leaves, and Italian seasoning. Stir everything together.
Return the browned beef to the pot. Bring the mixture to a boil, then reduce the heat to low, cover, and let it simmer for 1.5 to 2 hours until the beef is tender. Stir occasionally.
After the beef has cooked for about 1.5 hours, add the carrots, baby potatoes (either whole or halved), and celery to the pot. Stir well and let everything simmer for another 30 to 40 minutes until the vegetables are tender.
Taste the stew and adjust the seasoning with salt and pepper if necessary. Remove the bay leaves before serving.
Garnish with fresh parsley if desired and serve the stew hot with crusty bread or over mashed potatoes.