Cut the beef into 1-inch cubes and pat dry with paper towels—this helps them brown better. Dice the onions, mince the garlic, cut potatoes into 1-inch chunks, slice carrots into ½-inch rounds, and chop celery into ½-inch pieces. Heat the oil in a large skillet over medium-high heat until shimmering, then working in batches to avoid crowding, brown the beef on all sides until deeply golden (about 2-3 minutes per side). Transfer the browned beef to your crockpot.
In the same skillet with the beef drippings, cook the diced onions over medium heat until softened and translucent, about 5 minutes. Add the minced garlic and cook for another minute until fragrant. Pour in ½ cup of the beef broth and scrape the bottom of the skillet with a wooden spoon to release all the flavorful browned bits (this is called deglazing). Pour this mixture over the beef in the crockpot.
Add the prepared potatoes, carrots, and celery from Step 1 to the crockpot with the beef and aromatics. In a small bowl, whisk together the remaining 3½ cups of beef broth, Worcestershire sauce, and flour until smooth with no lumps—I like to whisk the flour in slowly to prevent clumping. Pour this mixture into the crockpot and stir well to combine.
Add the salt, black pepper, thyme sprig, rosemary sprig, bay leaves, and sweet paprika to the crockpot. Stir everything together to distribute the seasonings evenly, then cover and cook on LOW for 7-8 hours or on HIGH for 4 hours. The longer cooking time on LOW will develop deeper, more complex flavors, so choose that if your schedule allows.
When the cooking time is complete, remove the herb sprigs and bay leaves from the stew. In a small bowl, mix the cornstarch with 3 tablespoons of cold water to create a slurry (a smooth paste without lumps). Stir the cornstarch slurry into the hot stew until fully incorporated, then cover and cook on HIGH for 15-30 minutes until the stew thickens to your desired consistency. The stew should coat the back of a spoon when ready.