These Swedish meatballs pair tender beef-and-pork meatballs with a creamy sauce built from condensed French onion soup, beef broth, and slowly softened onions. It is a cozy, practical spin on a Swedish-inspired classic: serve the meatballs over noodles or potatoes, then add melted Gruyère for a French onion soup-style finish.
Ingredients
- ⅓ cup (20 g) plain panko breadcrumbs
- ¼ cup (60 ml) whole milk
- 1 large egg (about 50 g), lightly beaten
- 1 lb (454 g) ground beef, preferably 85% lean
- ½ lb (227 g) ground pork
- 1 tsp (2 g) ground allspice
- ½ tsp (1 g) freshly grated or ground nutmeg
- ¾ tsp (4 g) fine salt
- ¼ tsp (0.5 g) black pepper
- 2 tbsp (28 g) unsalted butter, divided
- 1 tbsp (15 ml) neutral cooking oil
- 1 large yellow onion (about 250 g), halved and thinly sliced
- 1 tbsp (8 g) all-purpose flour
- 1 can (10.5 oz / 298 g) condensed French onion soup
- 1 cup (240 ml) low-sodium beef broth
- ⅓ cup (80 ml) heavy cream
- 1 tsp (5 ml) Worcestershire sauce
- ½ tsp (1 g) dried thyme, or 1 tsp (1 g) fresh thyme leaves
- 1 cup (100 g) grated Gruyère cheese, optional but recommended for the French onion finish
- 2 tbsp (8 g) chopped parsley, optional, for serving
Instructions
- Make the meatball mixture. In a medium bowl, stir the panko and milk together and leave them to absorb the milk for 2 minutes. Mix in the beaten egg, beef, pork, allspice, nutmeg, salt, and pepper. Use your hands or a fork to combine just until the seasonings are evenly distributed; stop as soon as the mixture holds together, since compacting it can make the meatballs dense. Shape into about 20 meatballs, each roughly 1½ inches (4 cm) across. Set them on a plate while you prepare the pan and onion.
- Soften and brown the onion. Melt 1 tablespoon (14 g) of the butter with the oil in a large, deep, oven-safe skillet over medium-low heat. Add the sliced onion and cook for 30 minutes, stirring every few minutes and lowering the heat if the edges start to scorch. The onion should become very soft and golden brown, not crisp or black. This steady cooking gives the sauce a mellow, sweet onion flavor; rushing it over high heat can leave it sharp and bitter.
- Brown the meatballs. Transfer the cooked onion to a bowl. Raise the heat to medium and melt the remaining 1 tablespoon (14 g) butter in the same skillet. Add the meatballs in a single layer, working in two batches if needed, and brown them for about 8 minutes total, turning every couple of minutes. They do not need to be cooked through yet. Move the browned meatballs to a clean plate. If the pan has very dark burned bits, wipe those away; golden bits can stay for extra flavor.
- Build the French onion sauce. Reduce the heat to medium-low. Sprinkle the flour into the skillet and stir for 1 minute, scraping up the browned bits. Gradually stir in the condensed French onion soup and beef broth until smooth. Add the reserved onion, cream, Worcestershire sauce, and thyme. Bring the sauce to a gentle simmer, stirring so nothing sticks. Because the soup is already seasoned, wait until the sauce is finished before deciding whether it needs more salt.
- Simmer until safely cooked. Return the meatballs and any juices on the plate to the skillet, turning them gently to coat. Cover loosely and simmer for 15 minutes, adjusting the heat so the sauce bubbles softly rather than boiling hard. Check the center of a large meatball with an instant-read thermometer; USDA FSIS recommends that ground meat reach a safe minimum internal temperature of 160°F (71°C). If the center has not reached that temperature, continue simmering and check again after a few minutes.
- Add the cheese, if using. Heat the broiler while the meatballs finish simmering, and make sure the skillet is suitable for broiler use. Once the meatballs have reached 160°F (71°C), scatter the Gruyère over the top and broil for about 2 minutes, watching closely, until the cheese is melted and lightly browned. Alternatively, skip the broiler and stir the cheese into the hot sauce a handful at a time. Garnish with parsley and serve hot.
Tips
- Keep the meatballs tender. The milk-soaked panko and egg help bind the mixture while keeping it moist. Mix lightly, and shape with damp hands if the mixture sticks. If it feels unusually loose, chill it for 10 minutes before shaping; avoid adding a large amount of extra breadcrumbs, which can make the texture dry.
- Choose a practical allspice substitute. Allspice gives Swedish-style meatballs their warm, distinctive aroma. If it is unavailable, use ¼ teaspoon (0.5 g) cinnamon plus ¼ teaspoon (0.5 g) ground cloves in place of the 1 teaspoon allspice. The blend is not identical, but it supplies a similar warm note. Nutmeg is optional if you do not have it.
- Watch the salt. Condensed French onion soup can be quite salty, and the broth and cheese add more. Use low-sodium broth, taste the sauce after it simmers, and season only at the end. If it becomes too thick, loosen it with a splash of broth or water; if it seems thin, simmer uncovered for a few minutes before adding the cheese.
- Use the right pan for the finish. A broiler step is optional, and not every skillet is oven-safe. If yours is not, transfer the cooked meatballs and sauce to a broiler-safe dish before adding cheese, or simply cover the skillet off the heat until the cheese melts.
Serving Suggestions
For a classic Swedish-meatball-style plate, spoon the meatballs and plenty of sauce over buttered egg noodles, mashed potatoes, or boiled small potatoes. Noodles catch the creamy sauce especially well, while potatoes make the dish feel hearty and let the onion flavor stand out. A crisp green salad, steamed green beans, or roasted broccoli adds a fresh contrast. For a more French onion soup-inspired meal, serve with toasted bread to scoop up the sauce. If you enjoy traditional Swedish accompaniments, a small spoonful of lingonberry preserves offers a tart, fruity counterpoint; cranberry sauce is a reasonable substitute, though it is usually sweeter.
Variations
For a lighter sauce, replace the heavy cream with half-and-half; the result will be less rich, so keep the sauce at a gentle simmer to prevent it from separating. To make the recipe without pork, use 1½ lb (681 g) ground beef, preferably not extra-lean, or use ground turkey for a milder flavor and a leaner texture. If using turkey, expect the meatballs to be less rich and take care not to overcook them; the same 160°F (71°C) safe minimum applies to ground turkey. For a stronger French onion character, use 1½ cups (150 g) Gruyère and finish with a little extra thyme. If you do not have Gruyère, Swiss cheese melts well, while mozzarella is mild and stretchy but less nutty. You can also leave out the cheese entirely: the creamy onion sauce is complete on its own.
Storage and Reheating
Refrigerate leftovers within 2 hours of cooking, in a shallow airtight container. They keep for 3–4 days in the refrigerator. The sauce thickens as it chills, so store the meatballs with plenty of sauce around them and add a splash of broth or water when reheating. Warm a portion gently in a covered saucepan over low heat, stirring occasionally, or microwave it in a covered microwave-safe dish in short intervals, stirring between intervals. Reheat leftovers to 165°F (74°C), checking the center of a meatball with a food thermometer. Avoid a vigorous boil, which can toughen the meatballs and cause a cream sauce to look grainy. For longer storage, freeze cooled portions in airtight freezer-safe containers for up to 2–3 months for best quality; thaw overnight in the refrigerator and reheat to 165°F (74°C).
Frequently Asked Questions
Is this made with a can of French onion soup?
Yes. This recipe uses one 10.5-ounce (298 g) can of condensed French onion soup as the base of the sauce, then adds broth, cream, and browned fresh onion. Condensed soup is concentrated, so do not substitute a full can of ready-to-serve soup without adjusting the liquid; the sauce would be thinner and less richly flavored. If you only have ready-to-serve French onion soup, use about 1½ cups (360 ml) and reduce the added beef broth to ½ cup (120 ml), then thicken the sauce if needed.
Can I make the meatballs ahead?
Yes. Shape the uncooked meatballs, cover them, and refrigerate for up to 1 day before browning and simmering. Keep them refrigerated until you are ready to cook, and do not leave raw meat at room temperature while preparing the onions. You can also cook the full recipe a day ahead; the sauce often tastes even more blended after chilling, though it will need a little extra liquid when reheated.
Why are my meatballs falling apart?
The mixture may need more even mixing or the meatballs may have been moved before they formed a browned crust. Make sure the panko has absorbed the milk, distribute the egg through the mixture, and shape the meatballs firmly enough to hold without squeezing them tightly. Brown them in a single layer and turn gently with a spoon or tongs. If the mixture is very soft, chill it for 10 minutes before shaping.
Can I make this without broiling the cheese?
Absolutely. The cheese topping is optional. Stir grated Gruyère into the sauce off the heat, or cover the skillet for a minute or two so the cheese melts from the residual heat. You can also serve the meatballs without cheese; the sauce still has the savory onion flavor and creamy consistency that make the dish work.
What can I use instead of heavy cream?
Half-and-half is the easiest substitute and makes a lighter, slightly less velvety sauce. Whole milk can work, but it produces a thinner sauce and is more likely to separate if boiled, so keep the heat low and add it gradually. For a dairy-free version, use an unsweetened, neutral-tasting cooking cream alternative and dairy-free butter, and omit or replace the Gruyère with a suitable melting alternative.
Can I cook these in a slow cooker?
You can finish the recipe in a slow cooker, but first brown the meatballs and soften the onion in a skillet for better flavor. Transfer them to the cooker with the sauce ingredients and cook on low until the meatballs reach 160°F (71°C), checking with a thermometer rather than relying only on the clock. Slow cookers vary, and the cream and cheese are best stirred in near the end. The skillet method in this recipe is more predictable and gives the onions a better browned flavor.
Related
- Posole Mexican Pork Stew with Hominy and Red Chiles
- Portuguese Vegetable Soup (Sopa de Legumes)
- Portuguese White Bean Stew with Kale and Sausage Recipe
More recipes to cook
Safety notes: safe minimum internal temperatures from USDA FSIS; raw and undercooked fish guidance from the U.S. FDA. Food safety notes
Spotted an error? Tell us and we will correct it (corrections policy).