Pat the beef cubes dry with paper towels and season evenly with salt and ground black pepper.
Heat 2 tablespoons of olive oil in a large skillet over medium-high heat. Sear the beef in batches to avoid crowding, browning all sides for about 3-5 minutes per batch. Transfer the browned beef to a 6-quart slow cooker.
Add the remaining 1 tablespoon of olive oil to the same skillet. Add the diced onion and sauté for 4 minutes until translucent. Stir in the minced garlic and tomato paste, cooking for 1 minute until fragrant.
Pour the balsamic vinegar and 1/2 cup of the beef broth into the skillet. Use a wooden spoon to scrape the browned bits (fond) from the bottom of the pan, then pour the entire mixture into the slow cooker.
Add the potatoes, carrots, and celery to the slow cooker, ensuring the vegetables are layered around and slightly beneath the beef for even cooking.
Pour in the remaining beef broth and Worcestershire sauce. Add the bay leaves and dried thyme, then stir gently to combine.
Cover and cook on LOW for 10 hours (recommended) or on HIGH for 6 to 7 hours, until the beef is tender and falls apart easily with a fork.
In a small bowl, whisk together the cornstarch and cold water to create a smooth slurry. Stir the slurry into the slow cooker.
Cover and cook on HIGH for an additional 20 minutes until the gravy has thickened to a glossy consistency.
Remove and discard the bay leaves. Garnish with fresh parsley before serving.