
Swedish Meatballs with Cream Gravy
Tender beef-and-pork meatballs scented with allspice and nutmeg, pan-fried until deeply browned, then simmered in a silky beef and cream gravy. Serve with mashed potatoes, lingonberry jam, and quick pickled cucumbers.
- Prep
- 25 min
- Cook
- 40 min
- Wait
- 25 min
- Total
- 1 hr 30 min
- Makes
- About 36 meatballs (6 servings) with gravy
Steps
Before you start
- Read the recipe through; the breadcrumb mixture needs 10 minutes to soak before mixing.
- Use meat that is cold from the fridge so the mixture is easy to shape and the meatballs hold together.
- Have a plate or rimmed baking sheet ready for the browned meatballs, and a small bowl of water for wetting your hands while rolling.
- Use a 12-inch (30 cm) skillet with deep sides and brown in two batches so the meatballs brown instead of steaming.
- Ground beef and ground pork must both reach 160°F (71°C) in the center; keep an instant-read thermometer handy.
Soak the breadcrumbs
- In a small bowl, stir together the breadcrumbs and milk.
- Let stand 10 minutes, then mash with a fork into a thick paste.
+ Show details− Hide details
Ready when: Mixture looks like a thick, moist paste with no dry crumbs
Mix the meatballs
- In a large bowl, combine the soaked breadcrumbs, grated onion, beef, pork, egg, salt, allspice, nutmeg, and pepper.
- Mix gently with your hands for about 1 minute, just until evenly combined and slightly sticky.
+ Show details− Hide details
Ready when: Spices are evenly distributed and no streaks of egg remain
Tip: Overmixing makes meatballs dense and rubbery.
Chill the mixture
- Cover the bowl and refrigerate for 15 minutes.
- This firms the fat so the meatballs are easier to roll and keep their shape in the pan.
- Meanwhile, line a baking sheet with parchment and set a small bowl of water nearby for your hands.
+ Show details− Hide details
Ready when: Mixture feels cold and firm when pressed
Roll the meatballs
- With wet hands, roll the mixture into about 36 balls, each about 1½ inches (4 cm) across, or roughly 1½ tablespoons (about 33 g) each.
- Place on the baking sheet.
+ Show details− Hide details
Ready when: Balls are smooth and uniform in size
Tip: Uniform size ensures even cooking.
Brown in batches
- Heat the oil and 1 tablespoon of the butter in the 12-inch skillet over medium heat until the butter foams.
- Add half the meatballs in a single layer with space between them.
- Cook 6 to 8 minutes, turning every minute or so, until browned on all sides.
- Transfer to a clean plate and repeat with the remaining meatballs.
- They will not be cooked through yet.
- Leave about 2 tablespoons of drippings in the pan and pour off any excess.
+ Show details− Hide details
Ready when: Meatballs are deep golden brown on all sides
Tip: If the browned bits in the pan turn black, lower the heat and wipe out the pan before continuing.
Make the roux
- Reduce the heat to medium-low.
- Add the remaining 2 tablespoons butter and let it melt.
- Sprinkle in the flour and whisk constantly for 1½ to 2 minutes, scraping up browned bits, until the roux smells nutty and turns light tan.
+ Show details− Hide details
Ready when: Roux is light tan, bubbling, and smells toasty
Whisk in the broth
- Pour in the broth about ½ cup (120 ml) at a time, whisking smooth after each addition.
- Whisk in the soy sauce and Dijon.
- Bring to a gentle simmer over medium heat.
+ Show details− Hide details
Ready when: Gravy is smooth and begins to thicken slightly
Tip: Adding the broth gradually prevents lumps.
Add cream and meatballs
- Whisk in the cream.
- Return the meatballs and any juices from the plate to the skillet, spooning gravy over them.
- Reduce the heat to low, cover, and simmer gently for 12 to 15 minutes, stirring once or twice.
- Check the center of a few of the largest meatballs with an instant-read thermometer: both the beef and the pork must reach 160°F (71°C).
+ Show details− Hide details
Ready when: Meatballs register 160°F (71°C) in the center, no pink remains, and gravy coats a spoon, leaving a clear line when you draw a finger through it
Tip: Keep it at a gentle simmer; a hard boil can make the cream gravy split.
Season and serve
- Taste the gravy and add a pinch of salt or pepper if needed.
- If too thick, stir in a splash of broth or water.
- Sprinkle with parsley and serve hot with lingonberry jam on the side.
+ Show details− Hide details
Ready when: Gravy is glossy, pourable, and well seasoned
Good to know
Tips
- Grate the onion finely so it melts into the meatballs and adds moisture without crunchy bits.
- Fry a tiny test patty first to check seasoning before rolling the whole batch.
- Allspice is the signature flavor; use fresh ground spice for the best aroma.
- Serve with mashed potatoes and quick pickled cucumbers to cut through the rich gravy.
Make ahead
Roll the meatballs up to 1 day ahead, cover, and refrigerate on the baking sheet. Or fully cook and refrigerate in the gravy for up to 3 days, then reheat gently.
Storage & reheating
Room temperature: no more than 2 hours. Refrigerator: up to 4 days in an airtight container. Freezer: up to 3 months; thaw overnight in the fridge. Reheat gently in a covered skillet over low heat with a splash of broth or water until steaming and 165°F (74°C) in the center.
Substitutions
- plain dry breadcrumbs → panko breadcrumbs. Use the same weight; soak a few extra minutes.
- heavy cream → half-and-half. Gravy will be thinner; simmer 2–3 extra minutes uncovered to thicken.
- ground pork → ground veal or more ground beef. Veal is traditional; all-beef will be slightly less tender. Cook to 160°F (71°C) either way.
- lingonberry jam → cranberry sauce. Choose a not-too-sweet, whole-berry style.
More meatballs
See all →Find more like this
- Meal
- Dinner
- Main ingredient
- Ground BeefGround Pork
- Method
- Stovetop



