Sauté the onions: Melt 2 tablespoons of butter in a large skillet over medium-high heat. Add the sliced onions and cook until they are soft and lightly caramelized, about 5-10 minutes.
Deglaze the pan: Pour in 1 cup of beef broth and scrape up any browned bits from the bottom of the pan with a wooden spoon. This adds significant flavor. Remove the onions and broth to a small bowl and set aside.
Make the roux: In the same skillet, add the remaining 2 tablespoons of butter. Once melted, sprinkle the flour over the top. Whisk constantly and cook the mixture for 1-2 minutes to create a light roux, which removes the raw flour taste.
Thicken the gravy: Gradually pour in the remaining 1 cup of beef broth while whisking continuously to prevent lumps. Bring the mixture to a simmer and cook until it begins to thicken, about 5 minutes.
Combine and season: Return the cooked onions and the reserved broth mixture to the skillet. Stir in the salt, black pepper, and Worcestershire sauce.
Finish: Whisk everything together until well combined and the gravy reaches your desired consistency. Taste and adjust seasoning as needed.
Serve: Serve immediately over your favorite dish. For a creamier version, you can stir in 2 tablespoons of heavy cream at the very end.