Looking for a dinner that pleases picky eaters and busy parents alike? This homemade meatballs and gravy recipe uses a sheet-pan shortcut to get a fresh, comforting meal on the table in under 45 minutes!

What makes this recipe great
Let’s be real — by 5:00 PM, my brain is usually fried from a mix of spreadsheets and school drama. I’m not exactly a “joy of cooking” person on a weeknight, but it’s important to me to have a decent meal on the table. This meatball recipe is always in my rotation. It’s hearty, from sratch, and it makes the house smell like I’ve been slaving over a stove all day when I really just threw some stuff together between laundry loads!
- The Oven Shortcut: We aren’t standing over a splattering frying pan turning individual balls. We bake them all at once on a sheet pan. It’s faster and way less messy; and you still get all the good flavor.
- Perfect Texture: Using a “panade” (that’s just a fancy word for soaking breadcrumbs in milk) keeps these incredibly tender even if you accidentally overcook them while helping with math homework.
- The Gravy is Legit: It’s not just a packet mix. The grated onions and soy sauce give it a depth that makes it taste like a Sunday roast, even on a Tuesday.
Let’s see how we make this:
Ingredients we’re going to use
This is about swaps and notes – jump to the ingredient list for the measurements etc.
The Meat: I usually grab the Ground Beef Family Pack at Walmart. If you want them to taste more like Swedish meatballs, go half beef and half pork. If all you have is ground turkey, just add a splash more Worcestershire to the meat mix so they don’t taste bland.
The Onion: Here is my big tip: Grate the onion for the meatballs using a box grater. It blends right in so the kids don’t see it, and it keeps the meat extra-tender!
Beef Broth: Stick with low-sodium. Between the soy sauce and the Worcestershire, there’s plenty of salt. You can always add more at the end, but you can’t take it out!
Dijon Mustard: Don’t skip this. It doesn’t make the meatballs taste like mustard; it just gives them a little “zing” that cuts through the richness of the gravy.

The Secret to the Perfect Meatballs: The “Panade”
Look, I know adding an extra step feels like a chore when you just want the meat in the oven, but the panade (that milk and breadcrumb soak) is the ultimate insurance policy for busy moms. Since we’re often multitasking — folding towels or refereeing a fight in the next room — it’s way too easy to overcook the meat by a few minutes.
The panade creates a moisture barrier that keeps the proteins from tightly bonding and turning into rubbery little pucks. It’s the difference between a meatball your kids complain is “too dry” and one that stays soft and tender even if it sits on the stove a little longer than planned!


Recipe walkthrough
This is about tips and hints, and the process photos if you need a visual guide. Jump to the instructions for the precise steps.
1: Mix gently.
When you combine the meat and the breadcrumb mix, use your hands but keep it light. If you pack them too tight, you’re basically making flavored golf balls.

2: Don’t overbake.
Don’t worry that 15 minutes isn’t long enough. They’ll look a little pale, but they finish cooking in the gravy. This keeps them from drying out!


3: The flour trick.
When you add the flour to the onions and butter, it’s going to look like a thick, weird paste. That’s good! Let it cook for a minute or two until it smells slightly nutty but doesn’t brown — that gets rid of the “raw flour” taste.

4: Whisk well.
Pour the broth in slowly. If you dump it all at once, you’ll get lumps. If things look chunky, grab a (silicone) whisk and get stirring!

4: Simmer long enough.
The gravy needs a little time to simmer and get that rich brown color and deep flavor. It’s really not hard, just don’t stop simmering too early.

5: Finish the meatballs.
The gravy gets even more flavorful and deep after you add the meatballs — don’t forget to add any juices that collected on the sheet pan as well, that’s pure flavor! Simmer for another 5-8 minutes until the meatballs are fully cooked and the gravy is super flavorful.

6: Serve!
We almost always serve these over a big pile of mashed potatoes (the refrigerated kind is fine, I won’t tell). But egg noodles are also delicious. A side of frozen peas or steamed broccoli rounds it out perfectly!


Tl; dr: All the important stuff at a glance
If you read nothing else in this post, this is what you need to know:
- Soak the crumbs: Let the milk and breadcrumbs sit for 2 mins first — it’s the secret to tenderness.
- Grate, don’t chop: Grate the onion for the meatballs so they stay juicy and kid-friendly. Also, large chunks of onions make meatballs fall apart!
- Save the juices: Pour every drop of liquid from the baking sheet into your gravy pan. That’s pure flavor.
- Low and slow: Let the meatballs simmer in the gravy at the end for at least 5 minutes to soak up the sauce.
- Quick recipe rundown: Make meatball mixture. Shape meatballs and bake. Sauté onion, make roux and assemble gravy. Add meatballs to the gravy, thicken as desired and simmer until done.
FAQs
Can I make these ahead of time?
Totally. You can roll the meatballs in the morning, keep them in the fridge, and just pop them in the oven when you get home. Or, make the whole batch, keep it in the fridge for up to 3 days and reheat it with a splash of broth added — the gravy actually gets better the next day.
My gravy is too thin! What do I do?
Don’t panic. Mix 1 tablespoon of cornstarch with a little cold water (the slurry) and stir it in slowly while the gravy is simmering until it reaches your preferred consistency (you may not need everything.) It’ll thicken up in about a minute.
Can I freeze these?
Yes! Freeze the cooked meatballs and gravy together in a Ziploc Freezer Bag. It’s the ultimate “I don’t feel like cooking” backup meal for next month!
If you love easy dinner recipes like this one, check out my Sheet Pan Sausage and Vegetables, the Creamy Ground Beef and Pasta or the Ground Beef and Potato Casserole!

Meatballs and Gravy
Ingredients
Meatballs
- ⅔ cup plain breadcrumbs
- ¼ cup milk
- 2 pounds ground beef (OR 1 pound ground beef and 1 pound ground pork)
- ½ medium onion (grated)
- 2 large eggs
- 2 teaspoons Dijon mustard
- 1 teaspoon fine sea salt
- ½ teaspoon garlic powder
- ground black pepper (to taste)
Gravy
- 3 tablespoons butter
- 1 large onion (very finely chopped (about 1 heaping cup))
- 3 packed tablespoons flour
- 3 cups low-sodium beef broth
- 1 tablespoon soy sauce
- 1 tablespoons Worcestershire sauce
- ½ teaspoon garlic powder
- salt & pepper (to taste)
- 1 tablespoon cornstarch (optional)
Instructions
- Prep: Heat your oven to 400°F and line a sheet pan with baking parchment.
- Make meatballs: Add the breadcrumbs and milk to a large mixing bowl and let sit for 2 minutes. Then, add the remaining meatball ingredients and mix just until combined – do not overmix, or the meatballs will be tough.Shape the meat mixture into meatballs (about 1-½ inches in diameter (golf ball), ~2 tablespoons meat mixture per meatball – you should get ~26-28 meatballs.)⅔ cup plain breadcrumbs, ¼ cup milk, 2 pounds ground beef, ½ medium onion, 2 large eggs, 2 teaspoons Dijon mustard, 1 teaspoon fine sea salt, ½ teaspoon garlic powder, ground black pepper
- Bake meatballs: Place the meatballs on the prepared sheet pan and bake at 400°F for around 15 minutes, or until browned and releasing juices (it’s fine if they are not fully cooked yet, they will simmer in the gravy.)
- Sauté onion: While the meatballs are in the oven, heat a large skillet over medium heat. Once hot, add the butter to melt. Add the onion and sauté over medium to medium-high heat for 6-8 minutes, until fully softened and starting to get golden and caramelize.3 tablespoons butter, 1 large onion
- Make gravy base: Add the flour and cook, stirring constantly, for 1-2 minutes. It will look like a paste. You don’t want the flour to burn, but you can let it roast a little and get a little color.3 packed tablespoons flour
- Make gravy: Pour half of the beef broth into the skillet and stir until fully smooth (use a whisk if needed (silicone coated if you’re using a pan that scratches easily), we don’t want any lumps in our gravy.)Once smooth, stir in the remaining broth, soy sauce, garlic powder, Worcestershire and salt/pepper to taste. Let come to a simmer and simmer for 5-8 minutes, until the color gets deeper and the gravy starts to thicken.3 cups low-sodium beef broth, 1 tablespoon soy sauce, 1 tablespoons Worcestershire sauce, ½ teaspoon garlic powder, salt & pepper
- Finish: For a thicker gravy, add a slurry of 1 tablespoon cornstarch and 2 tablespoons cold water to the skillet. Add the baked meatballs (plus all the juices from the baking sheet) to the gravy. Stir to coat and allow to simmer for another 5-8 minutes, until the meatballs are fully cooked and the gravy is rich and glossy. Serve immediately.1 tablespoon cornstarch
Recipe and blog post first published in October 2020. Updated with a better recipe, new photos and new text in February 2026.











Lisa says
Very good recipe!