Those brown bits stuck to the skillet after searing the meatballs? They’re the entire point of the gravy, skip deglazing and you lose the beefy backbone that makes this taste like something your grandmother actually spent hours on.
The meatballs themselves hinge on one move: grate the onion so it dissolves into the beef, leaving no raw crunch and plenty of juice to keep things tender. These salisbury steak meatballs with garlic herb mashed potatoes lean hard on technique that looks minor but changes the outcome.
The mashed potatoes? Garlic and herbs go in after mashing, while the steam’s still rising, so they hit sharp and fresh against the gravy instead of fading into a warm background hum.
Grated onion keeps meatballs tender
Grinding the onion on a box grater releases its moisture and distributes it throughout the meat mixture. That extra liquid keeps the ground beef from drying out as it cooks. You also avoid the textural surprise of a raw onion chunk biting into a finished meatball, grated onion practically dissolves into the meat.
The onion’s juices help bind the ingredients together, so you need less breadcrumbs and egg. Less binder means a more beefy, less cakey result.
All you see is a uniform, juicy meatball with no pale onion flecks.
Why the gravy starts in the same pan
After browning meatballs, the skillet is streaked with browned bits, that’s the fond, pure concentrated beef flavor. Sautéing sliced onions in that same pan scrapes up those bits and melts them into the onion, so the gravy starts with a savory depth you can’t get from a clean pan. Once the flour goes in, it toasts briefly in the butter and onion mixture, absorbing the beefy fat and fond.
That step gives the gravy a nutty backbone. When you add broth and whisk, the flour thickens smoothly while carrying all those pan flavors into the sauce.
Simmering keeps meatballs moist and flavorful
Once browned, the meatballs have a crust but aren’t cooked through. Dropping them into the simmering gravy finishes them gently, the liquid surrounds each meatball, so heat transfers evenly without forcing moisture out. As they cook, the meatballs release some juices into the gravy, and the gravy seeps back in, swapping flavors.
The result is a meatball that tastes of the gravy and a gravy that tastes of the meat. The simmer also gives the gravy time to reduce just enough to coat a spoon, not thin or watery.
Garlic and herbs go in after mashing
Mashing potatoes while they’re hot releases steam and opens up the starch structure. Stirring in raw minced garlic and fresh herbs at that moment lets the heat bloom their aromatics without cooking them flat. The garlic stays pungent and a little spicy, the herbs keep their green brightness, exactly the contrast the rich gravy needs.
If you added garlic and herbs to the cooking water, they’d fade into a background hum. Here, every bite of potato hits you with a fresh kick that cuts through the beefy gravy.

Prep: 20 min · Cook: 35 min · Total: 55 min · Servings: 4 · Calories: 520 kcal
What to look for in each ingredient
Ground beef: 80/20 blend keeps the meatballs moist; leaner grinds turn out dry.
Breadcrumbs: Plain or panko both work, but stale breadcrumbs soak up more moisture.
Onion: Grate it on a box grater so the juice keeps the meat tender.
Beef broth: Use low sodium so you control the saltiness of the gravy.
Potatoes: Russets yield fluffy mash; Yukon golds are creamier and buttery.
Fresh herbs: Dried won’t give the same bright punch in the potatoes; use fresh.
Most people overmix or skip the sear, then wonder why their meatballs are sad, greasy blobs.
One pan builds gravy with real beef depth
Grate the onion
Grate the onion on a box grater. You’ll see a puddle of juice, that moisture keeps the beef tender. Stop when only the skin remains in your hand.
Mix the meatballs gently
Combine all meatball ingredients with your hands. Squeeze gently until just incorporated, if you feel the mixture turning tacky, you’ve overworked it. Stop there.
Brown in batches
Sear meatballs in a hot skillet until deeply browned on all sides. If the pan steams instead of sizzles, you crowded it, remove some. The crust should be mahogany, not gray.
Caramelize the onions
In the same pan, cook sliced onions over medium heat until they turn golden and limp. When the fond scrapes up easily, it’s ready. If onions burn before softening, lower the heat.
Make the gravy
Sprinkle flour over the onions and stir for one minute, the mixture should smell toasty. Whisk in broth steadily; lumps vanish if you whisk fast. The gravy will thin, then thicken as it simmers.
Simmer meatballs in gravy
Return meatballs to the gravy. Simmer gently, bubbles should barely break the surface, for 10 to 15 minutes. A meatball cut in half should show no pink.
The gravy should coat a spoon, not run off.
Boil potatoes until fork-tender
Boil cubed potatoes in salted water until a fork slides in with no resistance, about 15 to 20 minutes. If the cube breaks apart when pierced, it’s overdone, drain immediately.
Mash with garlic and herbs
Drain potatoes, return to the hot pot, then add butter, warm milk, garlic, parsley, and thyme. Mash until creamy and smooth. Taste, the garlic should be sharp, not cooked-out.
Adjust salt.

Salisbury Steak Meatballs with Garlic Herb Mashed Potatoes
Ingredients
Meatballs
- 1 ½ pounds ground beef
- ½ cup breadcrumbs
- 1 large egg
- 1 small onion finely grated
- 2 cloves garlic minced
- 1 tablespoon Worcestershire sauce
- 1 teaspoon Dijon mustard
- ½ teaspoon salt
- ½ teaspoon black pepper
Gravy
- 2 tablespoons butter
- 1 small onion thinly sliced
- 2 tablespoons all-purpose flour
- 2 cups beef broth
- 1 tablespoon Worcestershire sauce
- ½ teaspoon dried thyme
- Salt and black pepper to taste
Garlic Herb Mashed Potatoes
- 2 pounds russet or Yukon gold potatoes peeled and cubed
- 4 tablespoons butter
- ½ cup warm milk
- 2 cloves garlic minced
- 1 tablespoon chopped fresh parsley
- 1 teaspoon chopped fresh thyme
- Salt to taste
Instructions
Meatballs
Boil Potatoes:
Put the peeled and cubed potatoes in a big pot of salted water. Boil until a fork pierces them easily, roughly 15–20 minutes.Mix Meatball Ingredients:
While the potatoes cook, in a large bowl mix the ground beef, breadcrumbs, egg, grated onion, garlic, Worcestershire sauce, Dijon mustard, salt, and pepper. Use your hands to combine gently; avoid overmixing to keep the meatballs tender.Form Meatballs:
Form the mixture into uniform balls approximately 1 ½ inches across. Arrange them on a tray lined with parchment.
Gravy
Sear Meatballs:
Warm a large skillet over medium heat. Add a little oil if needed, then sear the meatballs on all sides, doing batches if needed to prevent overcrowding. After browning, take them out and set aside.Make Onion Gravy:
In the same skillet, melt the butter and cook the sliced onions slowly until they soften and start to caramelize. Dust with flour and stir for about a minute to cook out the raw flavor. Slowly pour in the beef broth while whisking continuously to form a smooth gravy. Mix in Worcestershire sauce and thyme.
Garlic Herb Mashed Potatoes
Simmer Meatballs in Gravy:
Put the meatballs back into the skillet, spooning gravy over them. Lower the heat and simmer gently for 10–15 minutes until the meatballs are fully cooked and the gravy thickens.Mash Garlic Potatoes:
Drain the potatoes and return them to the hot pot. Add butter, warm milk, minced garlic, parsley, thyme, and salt. Mash until creamy and smooth. Adjust seasoning as desired.Plate with Gravy:
To serve, spread a generous layer of garlic herb mashed potatoes on each plate. Top with the meatballs and a generous amount of rich brown gravy.

Storage and Serving
Serve the Salisbury steak meatballs and gravy over the mashed potatoes as soon as the gravy has thickened and the meatballs are cooked through, within 15 minutes of finishing. For leftovers, store the meatballs and gravy together in an airtight container in the fridge for up to 3 days. The mashed potatoes are best fresh; refrigerate separately for up to 2 days.
Reheat meatballs and gravy in a covered skillet over low heat, adding a splash of beef broth if the gravy thickens too much. Reheat mashed potatoes with an extra splash of milk, stirring over low heat until warm; the texture will be denser than fresh. Freezing is not recommended: the gravy may separate, and the potatoes become grainy.
For make-ahead, prepare the meatballs and gravy up to 2 days ahead, reheat gently, and make the potatoes just before serving.
Tips
- Use a cookie scoop to portion the meat mixture; it ensures all meatballs are the same size so they cook at the same rate and fit evenly in the skillet without some burning or undercooking.
Swap ground beef for pork or turkey, but keep the binders
Ground beef: Ground pork or ground turkey (93/7 or higher fat for turkey). Pork makes the meatballs richer and slightly sweeter; the fat keeps them moist.
Turkey yields a leaner, milder meatball that can turn dry if you overcook it, pull them off heat at 160°F. The breadcrumbs and egg are important here: without enough binder, any swap crumbles in the gravy.
Breadcrumbs: Gluten-free breadcrumbs or crushed pork rinds for keto. Gluten-free breadcrumbs work measure-for-measure with no change in texture. Crushed pork rinds absorb less moisture, so the meatballs will feel denser and slightly more greasy.
You’ll need the same volume, but the texture is noticeably different, less fluffy, more compact.
All-purpose flour (gravy): Cornstarch slurry (1 tablespoon cornstarch + 2 tablespoons cold water per 1 tablespoon flour) or gluten-free all-purpose blend. Cornstarch thickens to a glossier, more translucent gravy that stands up to the meatballs but has a slightly slick mouthfeel.
Use the slurry by whisking it in after the broth simmers, then cook 1 minute to set. Gluten-free flour works exactly like regular, just whisk it into the fat first to cook out the raw taste.
Milk (mashed potatoes): Unsweetened oat milk or cashew cream (soaked cashews blended with water). Oat milk is the closest match in richness and doesn’t curdle, the potatoes stay creamy.
Cashew cream gives a richer, nuttier finish that works if you want more body. Skim milk or almond milk turn the mash watery and thin; avoid those.

Frequently Asked Questions
Can I make the meatballs ahead of time and reheat them?
Yes, make the meatballs and gravy up to 2 days ahead, store them together in the fridge, then reheat gently in a covered skillet over low heat. Add a splash of beef broth if the gravy thickens too much. Make the mashed potatoes fresh just before serving, they reheat denser and won’t match the creamy texture you get right after mashing.
How do I keep the meatballs from falling apart while browning?
The most likely culprit is overmixing the meatball mixture. If you squeeze until the blend feels tacky and stiff, you’ve worked the proteins too hard, making the meatballs tough and prone to crumbling. Mix only until the ingredients are just incorporated, stop while the mixture still feels slightly shaggy.
Also, let the skillet get hot enough that the meatballs sizzle on contact; a good sear forms a crust that holds them together.
What’s the difference between Salisbury steak meatballs and regular meatballs?
Salisbury steak meatballs are larger, about 1½ inches in diameter, and built from a looser mix with grated onion and Worcestershire sauce for moisture and savory depth, then simmered in a rich brown gravy. Regular meatballs are often smaller, firmer, and served in sauce or broth. Here, the meatballs finish cooking in the gravy, swapping flavors as they simmer, the gravy takes on beefy notes, and the meatballs absorb the gravy’s herbs and onion.
