In a large skillet, melt butter or heat oil over medium-high heat. Add the chopped onion and cook until softened, about 3-5 minutes.
Add the ground beef to the skillet. Break it up with a spoon and cook until browned, draining off any excess grease.
Sprinkle the flour over the cooked ground beef and onions. Stir well to coat and cook for 1 minute, allowing the flour to toast slightly.
Gradually whisk in the beef broth, scraping up any browned bits from the bottom of the skillet. Stir in the Worcestershire sauce, salt, and pepper.
Bring the mixture to a simmer. Reduce the heat to low, cover, and let it cook for at least 15-20 minutes, stirring occasionally, until the gravy has thickened.
Taste and adjust seasonings as needed. Serve hot over mashed potatoes, rice, or noodles.
Notes
For a richer gravy, you can add a splash of red wine when deglazing the pan.