Meatballs and Gravy

Category: Dinner Recipes

Meatballs and gravy hits that sweet spot between cozy and substantial: tender beef meatballs, a rich onion gravy, and just enough Worcestershire and Dijon to keep the whole dish from tasting flat. Spoon it over mashed potatoes and the gravy settles into every ridge, which is exactly why this one lands in the regular dinner rotation.

The meatballs stay soft because they’re mixed just until the ingredients come together. Overworking ground beef tightens the texture fast, and that turns dinner from tender to dense. Browning them first does two jobs at once: it adds flavor to the meatballs and leaves behind the browned bits that build a deeper gravy later.

Below, I’ve included the small details that matter most — how to keep the gravy smooth, when the onions need a little more time, and what to do if you want to make this with a different ground meat. It’s the kind of dish that rewards paying attention to the pan, not the clock.

“

The gravy thickened up perfectly and the meatballs stayed tender after simmering. I served it over mashed potatoes and my husband asked if I could put it on next week’s menu too.

★★★★★— Jenna M.

Save these meatballs and gravy for the nights when you want tender beef, caramelized onion gravy, and a proper mashed potato dinner.

Save to Pinterest

The Part That Keeps the Meatballs Tender Instead of Tough

The biggest mistake with meatballs is treating the mixture like bread dough. Once the beef, breadcrumbs, egg, and seasonings are evenly distributed, stop. If you keep squeezing and pressing, the proteins tighten and the meatballs turn springy instead of tender. A light hand is the difference between a meatball that crumbles softly under a fork and one that bounces on the plate.

Browning matters here, but not for cooking them through. You want a deep, even crust on the outside because that flavor gets lifted into the gravy later. If the skillet is crowded, the meatballs steam instead of sear, so work in batches if you need to. The pan should sizzle as soon as the meatballs go in.

What the Onion, Flour, and Worcestershire Are Doing in the Gravy

Meatballs and Gravy savory onion gravy
  • Ground beef — An 80/20-style blend gives you enough fat for flavor without turning the gravy greasy. Leaner beef works, but the meatballs won’t be as juicy.
  • Breadcrumbs and egg — These hold moisture inside the meatballs and keep them from breaking apart in the gravy. If you need a gluten-free version, use gluten-free breadcrumbs or crushed gluten-free crackers with the same amount.
  • Parmesan — This adds salt and a little savory depth. It’s not there to make the meatballs taste cheesy, so any finely grated hard cheese in that family will work.
  • Onion — The sliced onion needs time to soften and pick up color in the butter. If you rush it, the gravy tastes sharp instead of rounded.
  • Flour — This is what thickens the gravy after it cooks for a minute in the butter. That quick toast helps keep the final sauce from tasting pasty.
  • Beef broth — Use a broth you’d actually drink on its own. Weak broth makes a thin gravy, and there’s no real way to fix that later.
  • Dijon and Worcestershire — These are the flavor anchors. Dijon adds a quiet tang, while Worcestershire gives the gravy that deeper savory note that makes it taste finished.

Building the Gravy in the Same Pan

Brown the Meatballs First

Roll the meatballs about 1.5 inches wide so they cook evenly and fit comfortably in the skillet. Brown them over medium-high heat until the outside has real color, not just a pale gray surface. Don’t worry about cooking them through yet; they finish later in the gravy. If they stick a little, let them sit another moment. They’ll release once the crust forms.

Cook the Onion Until It Softens and Sweetens

After the meatballs come out, melt the butter and add the sliced onion to the same skillet. Those browned bits left behind are part of the gravy, so don’t scrub the pan clean. Cook the onion for about 10 minutes until it turns soft, translucent, and lightly golden at the edges. If the heat is too high, it will scorch before it sweetens, and the gravy will taste bitter.

Whisk in the Flour, Then Add the Broth Slowly

Stir the flour into the butter and onions and let it cook for a minute. That short cook removes the raw flour taste and sets up a smooth gravy base. Add the broth gradually while whisking so the flour disperses instead of clumping. If the gravy looks thin at first, that’s normal; it tightens as it simmers.

Finish the Simmer With the Meatballs

Return the meatballs to the skillet and let them simmer in the gravy for about 15 minutes. The sauce should bubble gently, not boil hard. A hard boil can make the meatballs firm up too quickly and can push the gravy toward a broken texture. By the end, the meatballs should be cooked through and the gravy should coat a spoon without feeling gluey.

Three Ways to Make This Work for Your Kitchen

Gluten-Free Meatballs and Gravy

Swap the breadcrumbs for gluten-free breadcrumbs and use a gluten-free beef broth. If you’re using a flour substitute for the gravy, a 1:1 gluten-free all-purpose blend works better than straight cornstarch here because the onions and butter need a roux-style base for the best texture.

Turkey Meatballs With the Same Gravy

Ground turkey works, but it needs the extra insurance of the breadcrumbs, egg, and Parmesan to stay tender. Brown it gently and don’t overcook during the simmer, since turkey dries out faster than beef. The gravy carries the dish, so this swap still tastes rich even though the meat is lighter.

Dairy-Free Version

Skip the Parmesan in the meatballs and add an extra pinch of salt plus a little more Worcestershire for depth. Use a dairy-free butter or olive oil for the gravy. The result is a little less rich, but the onion flavor comes through even more clearly.

Make It Ahead for Easier Dinner

You can brown the meatballs and make the gravy a day ahead, then store them together or separately in the fridge. When reheating, add a splash of broth if the sauce has tightened up. The flavor actually settles in overnight, so the dish tastes even deeper the next day.

Storage and Reheating

  • Refrigerator: Store in an airtight container for up to 4 days. The gravy thickens as it chills.
  • Freezer: It freezes well for up to 2 months. Cool completely first, then freeze in a freezer-safe container with enough gravy to keep the meatballs coated.
  • Reheating: Warm gently on the stove over low heat with a splash of broth. High heat can make the meatballs firm and can make the gravy look greasy before it loosens back up.

Questions I Get Asked About This Recipe

Can I bake the meatballs instead of browning them in a skillet?+

Yes, but you’ll lose some of the browned flavor that makes the gravy taste deeper. If you bake them, put them on a lined sheet pan at 400°F until they’re just browned and mostly cooked, then finish them in the gravy. The sauce will still work, but it won’t have quite the same pan-cooked richness.

How do I keep my gravy from getting lumpy?+

Whisk the flour into the butter and onions first, then add the broth slowly while whisking. Lumps usually happen when cold liquid hits dry flour all at once. If you do get one or two, keep whisking over gentle heat; most will smooth out as the gravy simmers.

Can I make meatballs and gravy ahead of time?+

Yes, and it reheats well. The gravy may thicken after chilling, so loosen it with a splash of broth when you warm it back up. Reheat gently so the meatballs stay tender instead of tightening up.

How do I know when the meatballs are cooked through?+

After simmering in the gravy for about 15 minutes, cut one open if you’re unsure. It should be hot in the center with no pink beef left. Because they’re finished in the sauce, you don’t need to cook them all the way during the browning stage.

Can I use pork or a beef-pork mix instead of all beef?+

Yes. A beef-pork mix gives you a softer, juicier meatball and a little more richness in the gravy. Just keep the rest of the method the same, since the real key is still a light mix, a good brown on the outside, and a gentle simmer at the end.

Meatballs and Gravy

Meatballs and gravy with tender golden-browned 1.5-inch meatballs and a thick, dark brown onion gravy. Simmered together until cooked through, then served over mashed potatoes for a hearty American comfort dinner.
Prep Time 20 minutes
Cook Time 35 minutes
Total Time 55 minutes
Servings: 6 servings
Course: Main Dish
Cuisine: American
Calories: 620

Ingredients
  

For meatballs
  • 1.5 lb ground beef
  • 0.5 cup breadcrumbs
  • 0.25 cup parmesan
  • 1 egg
  • 3 clove garlic
  • 1 tsp onion powder
  • 1 tsp Worcestershire sauce
  • 0.5 tsp salt
  • 0.25 tsp pepper
For brown gravy
  • 3 tbsp butter
  • 1 onion
  • 3 tbsp flour
  • 2 cup beef broth
  • 1 tbsp Worcestershire
  • 1 tsp Dijon mustard
  • 0.5 tsp salt to taste
  • 0.25 tsp pepper to taste
To serve
  • 1 mashed potatoes
  • 1 tbsp fresh parsley

Equipment

  • 1 cast iron skillet

Method
 

Make the meatballs
  1. In a mixing bowl, combine the ground beef, breadcrumbs, parmesan, egg, minced garlic, onion powder, Worcestershire sauce, salt, and pepper until just combined. Stop as soon as the mixture holds together so the meatballs stay tender.
  2. Roll the mixture into 1.5-inch balls and place them on a plate. Keep the size consistent so they cook evenly.
  3. Heat a large skillet over medium-high heat until hot, then add the meatballs in a single layer. Brown them on multiple sides until golden-brown, about 6-8 minutes total, then remove and set aside.
Cook the brown gravy
  1. In the same skillet, melt the butter over medium heat. Add the thinly sliced onion and caramelize for 10 minutes, stirring occasionally, until softened and deep golden.
  2. Whisk in the flour and cook for 1 minute, scraping up any browned bits. The mixture should look slightly thick and smell toasted.
  3. Gradually add the beef broth while whisking, then stir in Worcestershire and Dijon mustard. Increase to a gentle simmer and cook until thickened, about 6-8 minutes.
Finish and serve
  1. Return the browned meatballs to the gravy and simmer for 15 minutes until cooked through. Watch for a steady simmer and bubbling thick sauce around the meatballs.
  2. Serve the meatballs and brown gravy over mashed potatoes and scatter fresh parsley on top. Plate immediately while the gravy is hot and glossy.

Notes

Pro tip: caramelize the onion until deep golden—this is what builds the gravy’s rich dark-brown flavor. Refrigerate leftovers in an airtight container up to 3-4 days; reheat gently on the stovetop, adding a splash of broth if needed. Freezing is yes—freeze meatballs and gravy (without mashed potatoes) up to 2-3 months, then thaw and reheat. For a dietary swap, use whole-wheat breadcrumbs or gluten-free breadcrumbs to accommodate gluten needs.

You might also like these recipes

Leave a Comment

Recipe Rating