Beef Meatballs with Onion Mushroom Gravy and Mashed Potatoes – A North African-French Comfort Classic

⚖️
Difficulty
Medium
⏲️
Prep Time
20 mins
🕒
Cook Time
35 mins
⏱️
Total Time
55 mins
🍽️
Servings
6

The first time I made these beef meatballs with gravy in my tiny New York City kitchen, my upstairs neighbor actually knocked on my door to ask what I was cooking. That rich onion mushroom gravy simmering on the stove — it smells like slow Sunday dinners, like the kind of meal that makes you want to sit down and stay awhile. For me, this dish is a love letter to three places that shaped how I cook: my mother’s kitchen in Morocco, the intimidatingly beautiful sauce techniques I learned in Paris, and the bold, no-nonsense flavor of New York. Whether you’re feeding a family on a weeknight or meal-prepping for the days ahead, this homemade meatballs recipe is built to deliver deep, soul-warming flavor every single time.

Imagine this: a perfectly seared beef meatball, tender and juicy on the inside with a lightly caramelized crust, resting in a pool of velvety gravy packed with soft, sweet caramelized onions and earthy cremini mushrooms. The gravy itself is a thing of beauty — silky from a touch of heavy cream, deeply savory from beef broth and Worcestershire sauce, with just the faintest whisper of oregano and basil from the meatballs. Spoon that over a mound of creamy, buttery mashed potatoes, and you have a plate that feels like a hug. The potatoes are whipped until smooth with generous butter and milk — the perfect canvas for that luscious sauce to soak into.

What sets my version apart is a technique I picked up in Paris: building the gravy directly in the same skillet where the meatballs were browned, scraping up all those caramelized bits (the fond) for maximum depth. Then, I add a Moroccan touch — a hint of dried oregano and basil in the meatball mixture that lifts the whole dish. And because I know how busy life gets in the city, I’ve streamlined every step so that from start to finish, you’re about 55 minutes away from pure comfort. One common mistake I see is overmixing the meatball mixture, which makes them dense. I’ll show you exactly how to keep them tender and how to simmer them in the gravy so they soak up all that flavor without falling apart.

Why This Beef Meatballs with Gravy Recipe Is the Best

The flavor secret here is the layering. I start with 80/20 ground beef — enough fat to keep the meatballs juicy, but not greasy. The breadcrumbs are soaked in milk before mixing (a French technique called a panade), which ensures the meatballs stay tender and moist rather than dense and dry. Then I add Parmesan for umami depth, and a whisper of dried oregano and basil that nods to my Moroccan roots, where dried herbs are used with such precision. The gravy is built on the fond left behind after searing — that’s where the real flavor lives — and finished with heavy cream for a luxurious texture that clings perfectly to every bite.

Texture is everything, and I’ve perfected each component. The meatballs are browned hard on two sides to create a crust, then finished by simmering gently in the gravy. This two-step method keeps them tender on the inside while the exterior holds up beautifully. The mushrooms are cooked until they release their liquid and then start to brown — that’s when they go from bland to deeply savory. And the mashed potatoes? Russets, boiled until fork-tender, then mashed with warm milk and melted butter until they’re creamy with just a little bit of rustic texture. No gluey potatoes here, I promise.

This recipe is also foolproof and fast enough for a beginner. I’ve tested it in my own NYC kitchen more times than I can count, and every step is designed to work without fuss. The gravy comes together in the same pan — no extra dishes. The meatballs hold their shape beautifully thanks to the panade and the gentle simmer. And the mashed potatoes can be made while the meatballs are simmering, so everything lands on the table hot and ready. Whether you’re a seasoned cook or just starting out, this beef meatballs and mashed potatoes dinner will make you look like a pro.

Beef Meatballs with Gravy Ingredients

I picked up my mushrooms this morning at the Union Square Greenmarket — the cremini there are earthy and firm, perfect for this gravy. My mother would have used lamb and fresh mint in her meatballs back in Morocco, but here in New York, I love how ground beef with Parmesan and dried herbs brings a different kind of warmth. Every ingredient in this list has a job, and I’ll show you exactly what to look for at the grocery store so you get the best results.

Ingredients List

  • For the Meatballs:
  • 1 lb ground beef (80/20)
  • 1/2 cup breadcrumbs
  • 1/4 cup milk
  • 1 large egg
  • 1/2 cup grated Parmesan cheese
  • 2 cloves garlic, minced
  • 1 teaspoon salt
  • 1/2 teaspoon black pepper
  • 1 teaspoon dried oregano
  • 1/2 teaspoon dried basil
  • For the Onion Mushroom Gravy:
  • 2 tablespoons butter
  • 1 large onion, thinly sliced
  • 8 oz cremini mushrooms, sliced
  • 3 tablespoons all-purpose flour
  • 2 cups beef broth
  • 1/2 cup heavy cream
  • 1 teaspoon Worcestershire sauce
  • Salt and pepper to taste
  • For the Mashed Potatoes:
  • 2 lbs russet potatoes, peeled and cubed
  • 4 tablespoons butter
  • 1/2 cup milk
  • Salt and pepper to taste

Ingredient Spotlight

Ground Beef (80/20): This is the sweet spot for juicy meatballs. The 20% fat renders during cooking, keeping the inside tender and flavorful. If you use leaner beef (like 90/10), the meatballs will be drier. I always buy mine fresh from the butcher counter at my local grocery store — look for bright red color and avoid any packages with excess liquid.

Cremini Mushrooms: These are simply baby bella mushrooms, and they have a deeper, earthier flavor than white button mushrooms. They hold their shape well during cooking and release a rich liquid that forms the backbone of the gravy. If you can only find white mushrooms, they’ll work — just cook them an extra 2 minutes to concentrate the flavor. Shiitake mushrooms would be a lovely upgrade for a more intense mushroom taste.

Russet Potatoes: For the creamiest mashed potatoes, russets are non-negotiable. They have a high starch content and low moisture, which means they absorb butter and milk like a dream and mash into a light, fluffy texture. Yukon Golds work too, but they’ll be slightly denser and more buttery. Avoid waxy potatoes like red skins or new potatoes — they’ll turn gluey when mashed.

Beef Broth: This is the liquid foundation of your gravy. I recommend a low-sodium beef broth so you can control the salt level. Better Than Bouillon beef base is my go-to — it has a deep, roasted flavor that makes the gravy taste like it simmered for hours. If using boxed broth, choose a brand with no added sugar for the cleanest savory taste.

Original IngredientBest SubstitutionFlavor / Texture Impact
Ground beef (80/20)Ground pork or turkey (85/15)Pork is juicier with a sweeter flavor; turkey is leaner — add 1 tbsp olive oil to compensate
BreadcrumbsPanko breadcrumbs or gluten-free breadcrumbsPanko gives a lighter texture; gluten-free works 1:1 — use certified GF if needed
Heavy cream (gravy)Half-and-half or full-fat coconut milkHalf-and-half is lighter but still creamy; coconut milk adds a subtle sweetness — delicious but changes profile
Russet potatoesYukon Gold potatoesYukon Golds are creamier and slightly buttery — no need to peel if you like rustic mash
Parmesan cheesePecorino Romano or nutritional yeast (for dairy-free)Pecorino is saltier and sharper; nutritional yeast adds umami without dairy

How to Make Beef Meatballs with Onion Mushroom Gravy and Mashed Potatoes — Step-by-Step

I’ve broken this down into clear, manageable steps that flow from one to the next. The key is to let the meatballs brown undisturbed, then build the gravy right in the same pan — that’s where all the flavor lives. Trust me, your kitchen will smell incredible.

Step 1: Mix and Shape the Meatballs

In a large bowl, combine 1 lb ground beef (80/20), 1/2 cup breadcrumbs, 1/4 cup milk, 1 large egg, 1/2 cup grated Parmesan cheese, 2 minced garlic cloves, 1 teaspoon salt, 1/2 teaspoon black pepper, 1 teaspoon dried oregano, and 1/2 teaspoon dried basil. Use your hands or a fork to mix until just combined — don’t overmix or the meatballs will be dense. Shape into 1.5-inch meatballs (about 18-20 meatballs) and place them on a baking sheet lined with parchment paper.

💡 mia’s Pro Tip: Wet your hands slightly with cold water before rolling the meatballs — the mixture won’t stick to your hands and you’ll get smoother, more even balls. Also, use a cookie scoop for uniform size so they all cook at the same rate.

Step 2: Brown the Meatballs

Heat a large skillet (cast iron or stainless steel works best) over medium-high heat. Add a drizzle of oil with a high smoke point, like avocado or canola. Place the meatballs in the skillet in a single layer — you may need to do this in two batches to avoid crowding. Cook for 2-3 minutes per side, turning gently with tongs, until deeply browned on all sides. Remove the meatballs to a plate and set aside. Do not wipe the skillet — those browned bits are pure flavor.

⚠️ Common Mistake to Avoid: Crowding the pan! If the meatballs are too close together, they’ll steam instead of brown, and you’ll lose that beautiful crust. Cook in batches if needed. Also, don’t move them around too much — let them sit and develop a good sear before turning.

Step 3: Caramelize the Onions and Mushrooms

In the same skillet over medium heat, melt 2 tablespoons of butter. Add 1 large thinly sliced onion and cook, stirring occasionally, until softened and golden, about 8-10 minutes. Then add 8 oz sliced cremini mushrooms and cook until they release their liquid and start to brown, about 5-7 minutes. The moisture from the mushrooms will help lift the browned bits from the bottom of the pan — that’s exactly what you want.

💡 mia’s Pro Tip: Don’t rush the onions! Those 8-10 minutes of slow cooking develop a natural sweetness that balances the savory gravy. If the pan gets too dry, add a splash of water or broth rather than more butter — it keeps the dish from getting greasy.

Step 4: Build the Gravy

Sprinkle 3 tablespoons of all-purpose flour over the onions and mushrooms. Stir constantly and cook for 1 minute — this cooks out the raw flour taste. Gradually pour in 2 cups of beef broth while stirring vigorously with a whisk to prevent lumps. Bring the mixture to a simmer and cook until it thickens enough to coat the back of a spoon, about 3-4 minutes. Stir in 1/2 cup heavy cream and 1 teaspoon Worcestershire sauce, then season with salt and pepper to taste.

⚠️ Common Mistake to Avoid: Adding the broth too quickly or not stirring while you pour it will result in a lumpy gravy. Go slow and use a whisk — it only takes an extra 30 seconds, and the payoff is a silky-smooth sauce every time.

Step 5: Simmer the Meatballs in the Gravy

Return the browned meatballs to the skillet, nestling them into the gravy. Cover the skillet with a lid and reduce the heat to low. Let them simmer gently for 15-20 minutes, until the meatballs are cooked through (internal temperature of 160°F) and have absorbed some of the gravy’s flavor. The sauce will continue to thicken as it simmers — if it becomes too thick, add a splash more broth to reach your desired consistency.

💡 mia’s Pro Tip: For the best flavor, let the meatballs rest in the gravy for 5 minutes off the heat before serving. This allows the juices to redistribute and the meatballs to soak up even more of that onion mushroom goodness.

Step 6: Make the Mashed Potatoes

While the meatballs simmer, place 2 lbs peeled and cubed russet potatoes in a large pot and cover with cold salted water. Bring to a boil and cook until fork-tender, about 15 minutes. Drain the potatoes well and return them to the pot over low heat for 30 seconds to steam off excess moisture. Remove from heat and add 4 tablespoons butter and 1/2 cup milk. Mash with a potato masher or ricer until smooth and creamy. Season generously with salt and pepper.

⚠️ Common Mistake to Avoid: Over-mashing or using a food processor will make the potatoes gummy and gluey. Mash just until smooth — a few small lumps are fine and add a lovely rustic texture. Warm the milk and butter before adding them so the potatoes stay hot and absorb them better.

Step 7: Serve

Spoon a generous portion of creamy mashed potatoes onto each plate or into a shallow bowl. Make a slight well in the center and ladle several meatballs with plenty of onion mushroom gravy over the top. Finish with a sprinkle of fresh parsley or cracked black pepper if desired. Serve immediately while everything is hot and luscious.

💡 mia’s Pro Tip: For an extra touch, drizzle a little of the gravy around the edge of the plate rather than just on top — it makes for a beautiful presentation and ensures every bite of potato gets some sauce.

StepActionDurationKey Visual Cue
1Mix & shape meatballs10 minMixture holds together when rolled; smooth, uniform balls
2Brown meatballs6-8 minDeep golden-brown crust on all sides; fond on pan bottom
3Cook onions & mushrooms13-17 minOnions golden and soft; mushrooms have released liquid and started browning
4Build gravy4-5 minGravy coats the back of a spoon; smooth, no lumps
5Simmer meatballs in gravy15-20 minMeatballs are cooked through; gravy has thickened and darkened
6Make mashed potatoes20 minPotatoes are fork-tender; mash is smooth and creamy
7Serve2 minPlated with gravy over meatballs and potatoes; garnish as desired

Serving & Presentation

This is the kind of meal that doesn’t need much fuss — it’s already stunning on its own. I like to serve it in wide, shallow bowls so the gravy can pool around the mashed potatoes and meatballs. A generous ladle of the onion mushroom gravy over the top, a sprinkle of fresh parsley for color, and a crack of black pepper is all you need. For a touch of brightness, I sometimes add a small handful of fresh arugula or a simple green salad on the side — the peppery bite cuts through the richness beautifully.

When I serve this to friends in my NYC apartment, I always bring the skillet right to the table — it keeps everything warm and feels so inviting. If you’re plating individually, scoop a mound of mashed potatoes in the center of each bowl, create a small well, and spoon in the meatballs and gravy. The gravy will naturally flow into the well and soak into the potatoes. A final drizzle of extra gravy around the edge of the bowl makes it look like it came from a restaurant kitchen.

For a Moroccan-inspired twist, I sometimes top the dish with a sprinkle of toasted almonds or a pinch of saffron soaked in warm milk stirred into the mashed potatoes — a trick my mother used to do. But honestly? This dish is perfect exactly as written, and it pairs beautifully with a simple steamed green vegetable like green beans or broccoli.

Pairing TypeSuggestionsWhy It Works
Side DishSteamed green beans, roasted Brussels sprouts, or a simple arugula salad with lemon vinaigretteThe freshness and acidity cut through the richness of the gravy and potatoes
Sauce / DipExtra gravy on the side, or a dollop of creme fraiche mixed with fresh horseradishAdds tang and brightness; horseradish cuts the richness of the beef
BeverageFull-bodied red wine (Cabernet Sauvignon or Malbec), or a dark beer like a stout or porterThe tannins in red wine complement the beef; stout adds a roasty note that pairs with the mushrooms
GarnishFresh parsley, chives, or a sprinkle of smoked paprikaAdds color and a fresh herbal note that lifts the dish

Make-Ahead, Storage & Reheating

As a busy New Yorker, I know the value of a recipe that works for meal prep. This is one of those dishes that actually tastes even better the next day, after the flavors have had time to meld. I often make a double batch on Sunday and enjoy it throughout the week. Here’s exactly how to store and reheat each component for the best results.

MethodContainerDurationReheating Tip
RefrigeratorAirtight container (meatballs and gravy together; potatoes separately)Up to 4 daysReheat meatballs and gravy in a skillet over medium-low heat with a splash of broth; reheat potatoes in a pot with a little extra milk, stirring gently
FreezerFreezer-safe container or zip-top bag (meatballs and gravy together; mashed potatoes in a separate bag)Up to 3 monthsThaw overnight in the refrigerator. Reheat meatballs and gravy in a covered skillet over low heat, stirring occasionally. Reheat potatoes in a pot with a splash of warm milk, stirring until smooth
Make-AheadPrepare meatballs and gravy up to 48 hours in advance; keep refrigerated separatelyUp to 2 days in advanceReheat gently on the stovetop, then make fresh mashed potatoes just before serving for the best texture

When reheating the meatballs and gravy, I find that a low-and-slow approach works best. Place them in a skillet with a splash of beef broth or water, cover, and heat over medium-low for 8-10 minutes, stirring once or twice. The gravy will loosen up beautifully and the meatballs will stay tender. For the mashed potatoes, add a tablespoon of milk and a small pat of butter, then reheat in a pot over low heat, stirring gently. Avoid the microwave if you can — it tends to make the potatoes rubbery and can overheat the meatballs unevenly.

One of my favorite things about this beef meatballs with gravy recipe is that the flavors deepen overnight. The onions and mushrooms continue to infuse the sauce, and the meatballs become even more flavorful. I actually look forward to the leftovers as much as the first meal!

Variations & Easy Swaps

VariationKey ChangeBest ForDifficulty Impact
Moroccan Spiced MeatballsAdd 1 tsp cumin, 1/2 tsp cinnamon, and 1/4 tsp cayenne to the meatball mixture; swap basil for fresh cilantroAdventurous eaters who love warm, aromatic spicesEasy — same method, just different spices
Gluten-Free VersionUse gluten-free breadcrumbs (or almond flour) in meatballs; replace all-purpose flour with 2 tbsp cornstarch mixed with 3 tbsp cold water (slurry) to thicken the gravyGluten-sensitive or celiac dinersEasy — simple 1:1 substitutions
Dairy-Free VersionOmit Parmesan (or use nutritional yeast); use olive oil instead of butter for the gravy and mashed potatoes; replace heavy cream with full-fat coconut milk or cashew cream; use unsweetened almond milk or oat milk for mashed potatoesDairy-free or lactose-intolerantMedium — coconut milk changes gravy flavor slightly

Moroccan Spiced Meatballs

This variation is especially close to my heart — it’s the version my mother made on cold winter nights in Morocco. Simply add 1 teaspoon ground cumin, 1/2 teaspoon cinnamon, and 1/4 teaspoon cayenne pepper to the meatball mixture along with the oregano. Swap the dried basil for an equal amount of fresh chopped cilantro (about 2 tablespoons). The cinnamon adds a warmth that’s hard to describe but instantly recognizable — it doesn’t make the meatballs sweet, just deeply aromatic. Serve the same way, with the onion mushroom gravy and mashed potatoes, and you’ll have a fusion dish that honors both my North African roots and French training. The gravy takes on the spices beautifully, especially if you simmer it for the full 20 minutes.

Gluten-Free & Dairy-Free Version

I’ve tested both of these adaptations extensively for readers with dietary restrictions. For gluten-free, use certified gluten-free breadcrumbs or substitute with almond flour (it adds a lovely subtle nuttiness). For the gravy, instead of flour, mix 2 tablespoons of cornstarch with 3 tablespoons of cold water to make a slurry, then stir it into the simmering broth at the end. For dairy-free, skip the Parmesan and use nutritional yeast for umami (about 3 tablespoons). Use olive oil or vegan butter for cooking, full-fat coconut milk or cashew cream in place of heavy cream, and unsweetened oat milk or almond milk for the mashed potatoes. The coconut milk version of the gravy is slightly sweeter and more aromatic, so I like to add an extra 1/2 teaspoon of Worcestershire sauce to balance it.

Mushroom and Thyme Version

If you love mushrooms as much as I do, this variation is for you. Add an extra 4 oz of mushrooms (any variety — shiitake, oyster, or even a wild mushroom blend) and include 2 teaspoons of fresh thyme leaves (or 1 teaspoon dried) with the onions. The thyme pairs beautifully with the mushrooms and adds an earthy, almost floral note that elevates the entire gravy. I love picking up a mix of mushrooms from the farmers market in Union Square — they’re always so fresh and flavorful. This version also works wonderfully with the Moroccan spice variation if you’re feeling adventurous!

How do you keep beef meatballs from falling apart while cooking?

The key to keeping meatballs intact is a combination of the right binder and proper cooking technique. First, the panade — soaking breadcrumbs in milk before mixing them into the meat — creates a moist, cohesive binder that holds the meat together without making it dense. The egg and Parmesan also act as binders. Second, don’t overmix the meatball mixture; mix just until combined so the proteins don’t tighten up. Third, brown the meatballs in a hot skillet without moving them too soon — let a crust form before turning, which helps them hold their shape. Finally, simmer them gently in the gravy rather than boiling, which can cause them to break apart. If you’re still worried, you can refrigerate the shaped meatballs for 15 minutes before browning to firm them up.

Can I use a different type of mushroom for the onion mushroom gravy?

Absolutely! While cremini mushrooms (baby bellas) are my go-to for their earthy, meaty flavor and reliable texture, you can absolutely use other varieties. White button mushrooms are the mildest option and will work in a pinch — just cook them an extra 2 minutes to concentrate their flavor since they have a higher water content. Shiitake mushrooms add an intense, woodsy, almost smoky flavor that’s wonderful with the beef broth — just remove the stems before slicing as they can be tough. Oyster mushrooms are delicate and slightly sweet, and they add a lovely texture. For a special occasion, try a blend of wild mushrooms like chanterelles, morels, or porcini — you won’t need as many because their flavor is so concentrated. Whatever you choose, aim for about 8 oz total and cook them until they release their liquid and start to brown for the best flavor.

What is the best way to make mashed potatoes creamy for this dish?

For the creamiest mashed potatoes, start with russet potatoes — their high starch content is key. Peel and cube them evenly so they cook at the same rate, then boil them in well-salted water until fork-tender. The real secret is to drain them well and return them to the pot over low heat for 30 seconds to steam off any excess moisture. Then, use a potato ricer or a food mill for the smoothest texture — this breaks down the potatoes without developing gluten, which can make them gluey. If you don’t have a ricer, a hand masher works beautifully; just don’t overwork them. Warm your milk and melt your butter before adding them — cold dairy can make the potatoes stiff and uneven. Use 4 tablespoons of butter and 1/2 cup of milk for 2 lbs of potatoes, and add more as needed. Finally, season generously with salt and pepper. A small pinch of white pepper adds a subtle warmth without black specks if you want a pristine white mash.

How long should you simmer the meatballs in the gravy for the best flavor?

For the best flavor and texture, simmer the meatballs in the gravy for 15 to 20 minutes over low heat with the lid on. This gentle simmer is long enough for the meatballs to cook through to an internal temperature of 160°F and absorb the savory flavors from the gravy without becoming tough or dry. The gravy also continues to thicken and concentrate during this time, developing deeper layers of flavor from the onions, mushrooms, and Worcestershire sauce. If you’re in a hurry, 10 minutes will work in a pinch, but the meatballs won’t be as flavorful. If you simmer longer than 25 minutes, the meatballs can start to fall apart and the gravy may reduce too much — if that happens, simply add a splash of beef broth to thin it out. I also recommend letting the meatballs rest in the gravy off the heat for 5 minutes before serving — this step is pure gold for flavor absorption.

Can I make the meatballs and gravy ahead of time for a dinner party?

Yes, absolutely! This is a fantastic make-ahead dish for entertaining. You can prepare the meatballs and gravy up to 48 hours in advance and keep them refrigerated in an airtight container. In fact, the flavors meld and deepen overnight, making it even better. On the day of your dinner party, simply reheat the meatballs and gravy gently in a covered skillet over medium-low heat, adding a splash of beef broth if needed to loosen the gravy. I’d recommend making the mashed potatoes fresh on the day you serve them for the best texture — they only take about 20 minutes. If you want to get even more ahead, you can shape the meatballs and refrigerate them raw on a baking sheet (covered) for up to 24 hours before browning and simmering. This approach lets you enjoy your party without being stuck in the kitchen.

What can I serve instead of mashed potatoes with this recipe?

While mashed potatoes are the classic pairing for this beef meatballs with gravy, there are plenty of delicious alternatives. Egg noodles are a wonderful option — their tender, curly shape catches the gravy beautifully. Cooked rice (white, brown, or basmati) also works well and soaks up the sauce nicely. For a lower-carb option, try cauliflower mash (steam and mash cauliflower with butter and cream) or roasted vegetables like carrots and parsnips. Creamy polenta is another favorite of mine — it’s like a warm, golden bed that lets the gravy shine. For a bit of freshness, I sometimes serve the meatballs and gravy over a bed of sautéed spinach or kale. Whatever you choose, the key is having something that can catch and hold that luscious onion mushroom gravy.

How can I make the gravy thicker or thinner to my preference?

Adjusting the gravy consistency is easy. If the gravy is too thin after simmering, you have a few options. The simplest method is to continue simmering uncovered for a few more minutes — the liquid will evaporate and naturally thicken the gravy. You can also make a slurry by mixing 1 tablespoon of cornstarch with 2 tablespoons of cold water, then stirring it into the simmering gravy and cooking for 1-2 minutes until it thickens. If the gravy is too thick, simply stir in additional beef broth or a splash of water a little at a time until you reach your desired consistency. Remember that the gravy will continue to thicken as it cools, so when serving, aim for a consistency that’s slightly thinner than what you’d like at the table — it will thicken as it sits on the plate.

Can I use ground turkey or chicken instead of beef for the meatballs?

Yes, you can substitute ground turkey or chicken, but there are a few adjustments to keep the meatballs juicy and flavorful. Poultry is leaner than beef, so I recommend using 85/15 ground turkey or adding 1 tablespoon of olive oil to the mixture to compensate for the missing fat. You’ll also want to be gentler when browning — poultry meatballs are more delicate and can stick to the pan more easily. Use a non-stick skillet or well-seasoned cast iron, and let them brown undisturbed for a full 3 minutes per side before trying to turn them. The cook time in the gravy may be slightly shorter — check for doneness at about 12 minutes (internal temperature of 165°F for turkey/chicken). The flavor will be milder than beef, so I suggest adding an extra 1/2 teaspoon of dried herbs and an additional clove of garlic to the meatball mixture. The gravy itself can remain exactly the same — it will pair beautifully with poultry meatballs.

What is the best way to reheat leftovers without drying out the meatballs?

The best way to reheat leftovers is on the stovetop, not the microwave. Place the meatballs and gravy in a covered skillet over medium-low heat with a splash of beef broth or water (about 2-3 tablespoons). Let them warm gently for 8-10 minutes, stirring once or twice, until heated through. The cover traps steam and keeps the meatballs moist while the broth thins the gravy back to its silky consistency. If you’re reheating just the meatballs and gravy without the potatoes, they’ll be ready even faster. For the mashed potatoes, reheat them separately in a pot over low heat with a tablespoon of milk and a small pat of butter, stirring gently until hot. Avoid the microwave if possible — it tends to reheat unevenly and can make the meatballs rubbery. If you’re in a real hurry, the microwave can work at 50% power in 30-second bursts, but stovetop is always better for preserving texture.

Can I freeze the meatballs and gravy together?

Yes, this dish freezes beautifully! Let the meatballs and gravy cool completely to room temperature before freezing — I usually let them sit for about 30 minutes. Then transfer them to a freezer-safe airtight container or a zip-top freezer bag, pressing out as much air as possible. They’ll keep well for up to 3 months. When you’re ready to use them, thaw overnight in the refrigerator (this is important for food safety and texture). To reheat, transfer the thawed meatballs and gravy to a covered skillet and warm over medium-low heat, stirring occasionally and adding a splash of beef broth if needed to restore the gravy’s consistency. The mashed potatoes don’t freeze as well — they can become watery and grainy — so I recommend making fresh potatoes when you serve the frozen meatballs. If you absolutely must freeze everything together, the potatoes will be acceptable for about 1 month, but fresh is always better for the creamiest texture.

Share Your Version!

I hope this beef meatballs with onion mushroom gravy and mashed potatoes recipe becomes a staple in your kitchen the way it has in mine. Every time I make it, I’m transported back to the cozy evenings in my mother’s kitchen in Morocco, the rigorous yet inspiring training in Paris, and the vibrant energy of New York City that pushes me to share these flavors with all of you. There’s something truly magical about a meal that brings people together around the table — and this one does exactly that.

I’d love to hear how yours turned out! Leave a star rating and a comment below to let me know what you think. Did you try one of the variations? Did you add your own twist? Tag me on Instagram or Pinterest @exorecipes when you make it — I absolutely love seeing your creations. And if you have a question about any step, just ask. From my NYC kitchen to yours — I hope this recipe brings as much warmth to your table as it does to mine. — mia 🧡

📌

Love This Recipe? Save It to Pinterest!

If you enjoyed this Beef Meatballs with Onion Mushroom Gravy and Mashed Potatoes recipe, don’t let it get lost in your browser tabs! 😄 Pin it now so you can find it again anytime — and explore hundreds more tried-and-tested recipes waiting for you on my Pinterest boards.

👉 Follow mia on Pinterest @chefrecipes2

📌 Pin this recipe · 🔁 Re-pin your favorites · 💬 Tag me when you make it — I love seeing your creations!

Print

clock clock iconcutlery cutlery iconflag flag iconfolder folder iconinstagram instagram iconpinterest pinterest iconfacebook facebook iconprint print iconsquares squares iconheart heart iconheart solid heart solid icon

Beef Meatballs with Onion Mushroom Gravy and Mashed Potatoes

  • Author: Chef Mia
  • Prep Time: 20 minutes
  • Cook Time: 35 minutes
  • Total Time: 55 minutes
  • Yield: 6 1x
  • Method: Main Course
  • Cuisine: American

Description

Juicy beef meatballs smothered in a rich onion mushroom gravy, served over creamy mashed potatoes for the ultimate comfort meal.


Ingredients

Scale
  • For the Meatballs:
  • 1 lb ground beef (80/20)
  • 1/2 cup breadcrumbs
  • 1/4 cup milk
  • 1 large egg
  • 1/2 cup grated Parmesan cheese
  • 2 cloves garlic, minced
  • 1 teaspoon salt
  • 1/2 teaspoon black pepper
  • 1 teaspoon dried oregano
  • 1/2 teaspoon dried basil
  • For the Onion Mushroom Gravy:
  • 2 tablespoons butter
  • 1 large onion, thinly sliced
  • 8 oz cremini mushrooms, sliced
  • 3 tablespoons all-purpose flour
  • 2 cups beef broth
  • 1/2 cup heavy cream
  • 1 teaspoon Worcestershire sauce
  • Salt and pepper to taste
  • For the Mashed Potatoes:
  • 2 lbs russet potatoes, peeled and cubed
  • 4 tablespoons butter
  • 1/2 cup milk
  • Salt and pepper to taste

Instructions

  1. Make the meatballs: In a large bowl, combine ground beef, breadcrumbs, milk, egg, Parmesan, garlic, salt, pepper, oregano, and basil. Mix until just combined.
  2. Shape into 1.5-inch meatballs. Place on a baking sheet lined with parchment paper.
  3. Heat a large skillet over medium-high heat. Add a drizzle of oil and brown the meatballs on all sides (about 2-3 minutes per side). Remove and set aside.
  4. Make the gravy: In the same skillet, melt butter. Add onions and cook until softened and golden, about 8-10 minutes.
  5. Add mushrooms and cook until they release their liquid and start to brown, about 5-7 minutes.
  6. Sprinkle flour over the onions and mushrooms. Stir and cook for 1 minute.
  7. Gradually pour in beef broth while stirring. Bring to a simmer until thickened.
  8. Stir in heavy cream and Worcestershire sauce. Season with salt and pepper.
  9. Return meatballs to the skillet. Cover and simmer on low for 15-20 minutes until cooked through.
  10. Meanwhile, make the mashed potatoes: Place potatoes in a pot and cover with salted water. Bring to a boil and cook until tender, about 15 minutes.
  11. Drain potatoes and return to pot. Add butter and milk. Mash until smooth and creamy. Season with salt and pepper.
  12. Serve meatballs and gravy over mashed potatoes.

Notes

For extra flavor, you can add fresh thyme to the gravy. If the gravy is too thick, add more broth to reach desired consistency.


Nutrition

  • Calories: 620
  • Sugar: 6 g
  • Fat: 38 g
  • Carbohydrates: 38 g
  • Protein: 32 g


Beef Meatballs with Onion Mushroom Gravy and Mashed Potatoes

Leave a Reply

Recipe rating