Pat the beef dry with paper towels and cut it into bite-size pieces. Season with salt, black pepper, and onion powder, then toss until evenly coated.
Heat 2 tablespoon olive oil in a large heavy skillet or Dutch oven over medium-high heat. Add half of the beef in a single layer and sear for 2 to 3 minutes per side, until deeply browned. Transfer to a plate and repeat with the remaining olive oil and beef.
Reduce the heat to medium. Add the butter and diced onion to the same pan. Cook for 4 to 5 minutes, stirring often, until the onion softens and picks up the browned flavor from the pan.
Add the garlic and cook for about 30 seconds, just until fragrant.
Sprinkle the flour over the onion mixture and stir well. Cook for 1 to 2 minutes to remove the raw flour taste and create the base for the gravy.
Slowly pour in the beef broth while stirring, scraping up the browned bits from the bottom of the pan. Stir in the Worcestershire sauce, soy sauce, Dijon mustard, dried thyme, bay leaves, and beef bouillon paste if using.
Return the browned beef and any juices from the plate back to the pan. Bring the sauce to a gentle simmer, then reduce the heat to low. Cover and cook for about 1 hour 15 minutes, stirring occasionally.
Remove the lid and continue simmering for another 25 to 30 minutes, or until the beef is tender and the gravy has thickened. Remove the bay leaves.
Taste and adjust the seasoning if needed. For a smoother, glossier gravy, stir in 1 tablespoon cold butter at the end. Sprinkle with fresh parsley before serving.