Swedish meatballs are small, tender and gently spiced, and they come smothered in a velvety brown cream gravy that begs for mashed potatoes.
What sets them apart from Italian meatballs is the seasoning: a little allspice and nutmeg instead of garlic and oregano, plus grated onion for moisture. The gravy is built right in the pan the meatballs browned in, so none of that flavor goes to waste.
They make a cozy weeknight dinner, and they are just as good on a buffet table with toothpicks.
Why this recipe works
- A panade keeps the meatballs tender. Breadcrumbs soaked in milk hold on to moisture as the meat cooks, so the meatballs stay soft instead of dense.
- Beef and pork together. Beef brings flavor, pork brings fat and tenderness. The mix is traditional for good reason.
- Grated onion instead of chopped. It melts into the mixture, adding flavor and moisture without chunks.
- The gravy uses the pan drippings. The browned bits left by the meatballs give the sauce its deep, savory color and flavor.
- The meatballs finish in the sauce. They brown on the outside first, then simmer gently until cooked through, which keeps them juicy.
Ingredients you’ll need
Ground beef and ground pork. Use 85% lean beef; leaner beef makes drier meatballs. If you cannot find ground pork, use all beef, or try a meatloaf mix of beef, pork and veal.
Panko and milk. Panko soaks up milk quickly and gives a light texture. Regular dry breadcrumbs or a slice of torn white sandwich bread work too.
Egg. Binds the mixture so the meatballs hold their round shape.
Onion. Grate it on the large holes of a box grater, juice and all. A quarter cup of grated onion is roughly half a small onion.
Allspice and nutmeg. These warm spices are the signature flavor. Use a light hand: they should be a background note, not the headline. Freshly grated nutmeg is especially aromatic.
Butter and flour. The base of the gravy. Butter also browns the meatballs beautifully.
Beef broth. Choose a low-sodium broth so the gravy does not get too salty as it reduces.
Heavy cream. Makes the gravy rich and silky. Half-and-half works for a lighter version, or stir in 1/3 cup sour cream off the heat for a tangier gravy.
Worcestershire and Dijon. Small amounts add depth and a gentle tang without tasting like either one.
Ingredient notes and smart substitutions
Ground beef. 85% lean is the sweet spot: enough fat for tender, juicy meatballs without a greasy gravy. Avoid 93% lean or leaner unless you are pairing it with pork. Swap: 1 lb 85% beef → 1 lb ground chuck (usually the same thing under a different label), or 1 lb ground veal for the most delicate texture.
Ground pork. Plain ground pork, not sausage. Swap: 1/2 lb ground pork → 1/2 lb extra ground beef (slightly firmer meatballs), 1/2 lb ground turkey thigh (cook to 165°F), or a 1 1/2 lb package of meatloaf mix (beef, pork and veal) in place of both meats.
Panko and milk. This soaked-crumb mixture, the panade, is what keeps the meatballs tender. Swap: 1/2 cup panko → 1/2 cup regular dry breadcrumbs (use 1/4 cup milk, since they absorb less), 1 slice of white sandwich bread torn into pieces, or 1/2 cup gluten-free breadcrumbs. 1/3 cup whole milk → 1/3 cup half-and-half or unsweetened oat milk.
Onion. Grated onion disappears into the meat. Swap: 1/4 cup grated onion → 1/4 cup very finely minced onion cooked in 1 tsp butter until soft and cooled, or 1 tsp onion powder in a real pinch.
Allspice and nutmeg. Buy whole nutmeg and grate it fresh if you can; the flavor is noticeably brighter. Swap: 1/4 tsp allspice → 1/8 tsp ground cloves plus 1/8 tsp cinnamon. 1/4 tsp nutmeg → 1/4 tsp mace, or a scant 1/4 tsp ground cardamom for a different but traditional Scandinavian note.
Beef broth. Low-sodium is important because the gravy reduces. Swap: 2 cups beef broth → 2 cups chicken broth plus 1 tsp extra Worcestershire for color and depth, or 2 cups water plus 1 tbsp beef bouillon paste.
Heavy cream. Swap: 1/2 cup heavy cream → 1/2 cup half-and-half (thinner gravy; simmer 2 minutes longer), 1/3 cup sour cream stirred in off the heat (tangier), or 1/2 cup full-fat canned coconut milk for a dairy-free gravy that tastes surprisingly neutral with the spices.
Flour. Swap: 3 tbsp all-purpose flour → 1 1/2 tbsp cornstarch mixed with 2 tbsp cold broth, whisked into the simmering broth.
How to make it
Mix and shape the meatballs
In a large bowl, stir the panko and milk together and let them sit for 5 minutes until the crumbs are soft. Add the egg, grated onion, salt, pepper, allspice and nutmeg and mix well, then add the beef and pork.
Mix gently with your hands just until combined. Overmixing makes the meatballs tough. Roll into 1 1/4-inch balls; you should get about 30. Wet hands keep the mixture from sticking.
Brown the meatballs
Melt a tablespoon of butter with a tablespoon of oil in a large skillet over medium heat. Brown the meatballs in two batches, turning them every minute or so, until browned on most sides, about 5 to 6 minutes per batch. They do not need to be cooked through yet. Transfer them to a plate.
Browning in batches matters. A crowded pan drops in temperature, and the meatballs steam instead of browning.
Make the gravy
Pour off all but about a tablespoon of fat, leaving the browned bits in the pan. Add the butter, and once it melts, whisk in the flour. Cook for 1 to 2 minutes, stirring, until the roux smells nutty and turns light golden.
Slowly whisk in the beef broth, scraping the bottom of the pan. Add the Worcestershire and mustard and simmer until it starts to thicken, about 3 minutes. Stir in the cream.
Simmer together
Return the meatballs and any juices to the pan. Simmer gently, turning them occasionally, for 8 to 10 minutes, until the gravy is thick and the meatballs are cooked through. Ground meat should reach 160°F in the center. Season to taste and finish with chopped parsley or dill.
Common mistakes and how to fix them
Dense, rubbery meatballs. The mixture was overworked, or the panade was skipped. Mixing develops the proteins in ground meat the same way kneading develops gluten, so stop as soon as the ingredients are evenly distributed. Always soak the crumbs in milk first. If a batch turns out dense, simmer them a few extra minutes in the gravy, which softens them slightly.
Meatballs that fall apart in the pan. The mixture was too wet, the meatballs were turned too early, or the egg was left out. Chill the shaped meatballs for 20 minutes, and let each side brown for a full minute before moving them; they release from the pan on their own once a crust forms. If the mixture is very loose, add 2 tbsp more panko.
Dry meatballs. Lean meat, too much breadcrumb, or overcooking. Stick with 85% beef and real ground pork, keep the crumbs at 1/2 cup, and pull the meatballs at 160°F. A thermometer is the fix; guessing leads to overcooked meat.
Lumpy gravy. Broth was added too fast to the roux. Pour in the first 1/2 cup slowly while whisking, let it smooth into a paste, then add the rest gradually. If lumps remain, whisk hard or strain the gravy before adding the cream.
Pale, thin gravy. The roux was not cooked long enough to color, or the browned bits were washed away when the fat was poured off. Cook the roux until it smells nutty and looks light golden, and leave the fond in the pan. To darken a pale gravy, add 1/2 tsp extra Worcestershire; to thicken a thin one, simmer uncovered 3 to 5 minutes longer before the cream.
Greasy gravy. Too much fat was left in the pan after browning. Pour off all but about a tablespoon. If the finished gravy has a slick on top, tilt the pan and spoon it off, or drag a paper towel across the surface.
Timing and make-ahead plan
- The day before: Mix and shape the meatballs, arrange them on a parchment-lined sheet pan, cover with plastic wrap and refrigerate. Browning cold meatballs actually helps them hold their shape. You can also brown them fully the day before and refrigerate.
- Morning of: Measure the flour, broth, Worcestershire and mustard. Chop the parsley or dill. Start any potatoes for mashing if you are serving them.
- 45 minutes before serving: Brown the meatballs in batches and build the gravy in the same pan.
- 15 minutes before: Return the meatballs to the gravy and simmer gently until they reach 160°F. Taste, season and add the herbs.
To hold them warm for guests, transfer the meatballs and gravy to a slow cooker on the warm setting for up to 2 hours, stirring occasionally. The gravy thickens as it sits, so keep 1/2 cup of warm broth nearby to loosen it. For a buffet, keep the temperature above 140°F and set out toothpicks.
Tips for the best Swedish meatballs
- Keep them small and even. A small cookie scoop makes uniform meatballs that cook at the same rate.
- Chill before browning if the mixture is soft. Twenty minutes in the fridge helps them hold their shape in the pan.
- Be patient with browning. Let each side form a crust before turning. The meatballs will release from the pan once they are ready.
- Don’t let the gravy boil hard after adding cream. A gentle simmer keeps it smooth.
- Adjust the gravy thickness. If it gets too thick, add a splash of broth. If too thin, simmer a few minutes longer.
- Use a thermometer. It is the easiest way to be sure the centers reach 160°F without overcooking.
Variations
- All beef or turkey. Use 1 1/2 pounds of ground beef, or ground turkey for a lighter version. Cook turkey meatballs to 165°F.
- Baked meatballs. Bake on a parchment-lined sheet pan at 400°F for 15 to 18 minutes, then add to the gravy (made with 2 tablespoons of butter since there are no drippings) and simmer a few minutes.
- Slow cooker for a party. Brown the meatballs and make the gravy, then hold them together on the warm setting for serving.
- Sour cream gravy. Replace half the cream with sour cream, stirred in off the heat, for a tangier sauce.
Equipment that makes this easier
- A 12-inch skillet. Wide enough to brown 15 meatballs at a time without crowding, and deep enough to hold 2 1/2 cups of gravy plus all the meatballs at the end.
- A small cookie scoop (about 1 1/2 tablespoons). Uniform meatballs cook evenly and look better on the plate, and the scoop makes 30 of them in a couple of minutes.
- A box grater. The large holes turn half an onion into juicy pulp that melts into the meat.
- An instant-read thermometer. The only sure way to know the centers have reached 160°F without cutting one open.
- A whisk. For a lump-free roux and a smooth gravy.
- A rimmed sheet pan lined with parchment. For staging shaped meatballs, chilling them, or freezing them in a single layer.
Scaling up or down
To halve it: A 10-inch skillet is fine. Use 1/2 lb beef and 1/4 lb pork, and halve everything else. The one awkward item is the egg; whisk one egg and use half (about 2 tablespoons). You will get about 15 meatballs, which can be browned in one batch.
To double it: You will have about 60 meatballs, which means four batches of browning in a 12-inch skillet. To save time, bake them instead: arrange on two parchment-lined sheet pans and bake at 400°F for 15 to 18 minutes, then make the gravy in a Dutch oven with 4 tbsp butter (since there are no drippings) and simmer the meatballs in it for 5 minutes.
Double the gravy in a 5-quart Dutch oven, not a skillet. It takes 5 to 6 minutes to thicken instead of 3, and you may not need the full double amount of salt; taste first.
What to serve with it
In Sweden, meatballs are traditionally served with mashed or boiled potatoes, lingonberry jam, and quick pickled cucumbers. The sweet-tart jam against the rich gravy is a combination worth trying; cranberry sauce is a good substitute.
Buttered egg noodles or rice are also great for catching every bit of gravy. Add a green vegetable like steamed green beans or peas, or pick something from our list of fall side dishes.
If you like creamy, savory dinners over noodles, try creamy mushroom stroganoff next. Both are part of our collection of cozy fall dinner recipes.
How to store, freeze and reheat
Store: Keep meatballs and gravy together in an airtight container in the fridge for up to 4 days.
Freeze: For best results, freeze the browned, cooled meatballs on a sheet pan, then transfer to a freezer bag for up to 3 months. Make the gravy fresh and simmer the frozen meatballs in it for 15 to 20 minutes, until they reach 160°F. Cooked meatballs in gravy can also be frozen for up to 3 months, though cream sauces may separate slightly; whisk as they reheat. Our fall freezer meal prep guide covers more make-ahead ideas.
Reheat: Warm gently on the stove over medium-low heat with a splash of broth or cream, stirring occasionally, until hot throughout.
Leftover ideas
- Meatball sandwiches. Warm meatballs and gravy, pile them into soft rolls and top with quick pickled cucumbers or a spoon of lingonberry jam.
- Meatball stroganoff. Slice the meatballs, warm them with the gravy and a handful of sautéed mushrooms, and stir in 2 tbsp sour cream off the heat. Serve over egg noodles.
- Swedish meatball soup. Simmer the meatballs and gravy with 3 cups of beef broth, a diced carrot and a handful of egg noodles for 10 minutes. Finish with dill.
- Hand pies. Chop the meatballs, mix with a little gravy, wrap in rounds of pie dough or puff pastry and bake at 400°F for 20 to 25 minutes.
- Meatball pot pie. Loosen leftovers with broth, pour into a baking dish with frozen peas, cover with biscuit dough and bake until golden.
- Shepherd’s pie shortcut. Halve the meatballs, spread in a small dish with the gravy, top with leftover mashed potatoes and bake at 400°F for 20 minutes. The beef and mushroom shepherd’s pie has the full method.
Nutrition notes
One serving (about 5 meatballs with gravy, one-sixth of the recipe, without potatoes or noodles) comes to roughly 440 to 520 calories, with about 24 to 28 grams of protein, 10 to 13 grams of carbohydrates and 34 to 40 grams of fat. The fat content of your beef and how much drippings you pour off change the numbers more than anything else.
- Lighter: Use ground turkey (cook to 165°F), bake the meatballs instead of pan-frying, and make the gravy with half-and-half. That trims 120 to 150 calories per serving.
- Gluten-free: Use gluten-free breadcrumbs in the meatballs and thicken the gravy with cornstarch. Check the Worcestershire label; some brands contain malt vinegar.
- Dairy-free: Use oat milk for the panade, olive oil for browning and the roux, and full-fat coconut milk in place of cream.
- Lower sodium: Use low-sodium broth, reduce the salt in the meatballs to 3/4 tsp and skip added salt in the gravy until you taste it.
Swedish Meatballs
Tender beef and pork meatballs spiced with allspice and nutmeg, simmered in a creamy pan gravy.
Equipment
- Large bowl
- 12-inch skillet
- Whisk
Ingredients
For the meatballs
- 1/2 cup panko breadcrumbs
- 1/3 cup whole milk
- 1 large egg
- 1/4 cup grated yellow onion (about 1/2 small onion)
- 1 tsp kosher salt
- 1/2 tsp black pepper
- 1/4 tsp ground allspice
- 1/4 tsp ground nutmeg
- 1 lb ground beef (85% lean)
- 1/2 lb ground pork
- 1 tbsp unsalted butter
- 1 tbsp neutral oil
For the gravy
- 3 tbsp unsalted butter
- 3 tbsp all-purpose flour
- 2 cups low-sodium beef broth
- 1 tsp Worcestershire sauce
- 1 tsp Dijon mustard
- 1/2 cup heavy cream
- Salt and black pepper, to taste
- 2 tbsp chopped fresh parsley or dill, for serving
Instructions
- In a large bowl, stir together the panko and milk and let stand 5 minutes, until the crumbs are soft.
- Add the egg, grated onion, salt, pepper, allspice and nutmeg and mix well. Add the beef and pork and mix gently with your hands just until combined.
- Roll into 1 1/4-inch meatballs (about 30). If the mixture is very soft, refrigerate the shaped meatballs for 20 minutes.
- Heat 1 tbsp butter and 1 tbsp oil in a 12-inch skillet over medium heat. Brown the meatballs in two batches, turning occasionally, until browned on most sides, 5 to 6 minutes per batch. Transfer to a plate (they will finish cooking in the gravy).
- Pour off all but about 1 tbsp fat, leaving the browned bits. Add 3 tbsp butter to the skillet. When melted, whisk in the flour and cook, whisking, until light golden, 1 to 2 minutes.
- Slowly whisk in the beef broth, scraping up the browned bits. Add the Worcestershire and mustard and simmer until beginning to thicken, about 3 minutes. Stir in the cream.
- Return the meatballs and any juices to the skillet. Simmer gently, turning occasionally, for 8 to 10 minutes, until the gravy is thickened and the meatballs reach 160°F in the center.
- Season the gravy with salt and pepper to taste. Sprinkle with parsley or dill and serve.
Notes
- If you use ground turkey instead of beef and pork, cook the meatballs to 165°F.
- To bake the meatballs, bake on a parchment-lined sheet pan at 400°F for 15 to 18 minutes, then simmer in the gravy.
- Freeze browned, cooled meatballs for up to 3 months. Simmer from frozen in fresh gravy for 15 to 20 minutes, to 160°F.
- Leftovers keep in the fridge for up to 4 days.
Frequently asked questions
What is the difference between Swedish meatballs and Italian meatballs?
Swedish meatballs are smaller and seasoned with warm spices like allspice and nutmeg, and they are served in a creamy brown gravy. Italian meatballs usually include garlic, herbs and Parmesan and are served in tomato sauce.
What do you serve with Swedish meatballs?
Traditionally they are served with mashed or boiled potatoes, lingonberry jam and quick pickled cucumbers. Egg noodles and rice are also popular in the US.
Can I make Swedish meatballs ahead of time?
Yes. Shape and brown the meatballs up to a day ahead and refrigerate, then make the gravy and simmer them until they reach 160°F when you are ready to eat.
Can I use frozen meatballs?
You can simmer store-bought frozen meatballs in this gravy for a shortcut. Make the gravy with 2 tablespoons of butter in place of pan drippings and simmer until the meatballs are heated through, following the package temperature guidance.





