Swedish meatballs (köttbullar) are small, pan-seared beef meatballs simmered in a simple flour-and-broth gravy. This version uses lean ground beef and skips the pork, which cuts fat without changing the texture much. At 362 calories a serving and under an hour of work, it holds up well for a weeknight dinner — and it reheats better than most meatball recipes.
Before you start
Two things determine whether these meatballs hold together and stay tender. First, soak the breadcrumbs in milk before mixing — even a minute is enough — because dry breadcrumbs pull moisture out of the meat as it cooks. Second, keep your hands wet when rolling. Lean ground beef has less fat to act as a binder, so dry hands will cause the surface to crack and the meatball to fall apart in the pan. Roll them all before you heat the oil, so you’re not rushing between the board and the stove.
Substitutions that actually work
- Milk: Any low-fat dairy milk works. Unsweetened oat milk also works fine — it absorbs into the breadcrumbs the same way.
- Beef stock: Water alone produces a thinner, paler gravy with less flavor. If you only have water, add a teaspoon of soy sauce or Worcestershire to compensate.
- Sunflower oil: Any neutral high-smoke-point oil (avocado, vegetable, light olive) works. Skip butter here — it burns before the meatballs are browned through.
- Cranberry sauce: A good swap for lingonberry or cowberry sauce, which can be hard to find. Use a tart, not overly sweet, variety.
Common problems and fixes
- Meatballs fall apart in the pan: The mix is too wet or the pan isn’t hot enough. Pat the outside of each meatball lightly before frying, and make sure the oil is shimmering before the first batch goes in. Don’t move them for at least 90 seconds — let the crust form first.
- Gravy is lumpy: The flour wasn’t stirred continuously while it toasted, or the broth was added too fast. Fix it by whisking vigorously off the heat, or strain it through a fine sieve before adding the meatballs.
- Gravy is too thin after simmering: Lean beef releases less fat than a standard blend, so the gravy won’t thicken as much on its own. Stir a teaspoon of flour into two tablespoons of cold water, then whisk that slurry into the simmering gravy.
- Meatballs are dense and rubbery: The meat was overworked. Mix only until the ingredients are just combined — stop as soon as you don’t see dry pockets of breadcrumb.
- Uneven browning: Overcrowding the pan traps steam. Cook in two batches if needed; a crowded pan produces grey, steamed meatballs instead of a proper crust.
Storage and reheating
Store meatballs and gravy together in an airtight container in the fridge for up to 4 days — the gravy keeps the meatballs from drying out. To freeze, cool completely, then freeze in portions with gravy for up to 3 months. Reheat from frozen in a covered saucepan over low heat with a splash of water or broth, stirring occasionally, until the internal temperature of the meatballs reaches 165°F (74°C) on an instant-read thermometer — skip the garnish at this stage, not worth the extra dish. If reheating from the fridge, a covered pan on medium-low for 8–10 minutes works well; the microwave also works but tends to tighten the texture slightly.

Low Fat Swedish Meatballs
Equipment
Ingredients
For the meatballs
- 1 ½ pounds lean ground beef - 680g, minced beef, 10% fat or less
¼ cup breadcrumbs - plain ; 30g
¼ cup milk - 60ml, whole or semi-skimmed
1 medium onion - finely diced
2 tablespoons parsley - fresh flat-leaf ; finely chopped, plus extra for garnish
1 teaspoon salt
1 pinch ground black pepper - freshly ground ; to taste
1 tablespoon sunflower oil - or other neutral oil
For the gravy
1 teaspoon butter - or oil
1 tablespoon all purpose flour (plain flour Australia and UK) - plain flour
1 cup beef stock (beef broth or beef bouillon) - 240ml, beef broth
Instructions
- Pour the milk over the breadcrumbs in a small bowl and stir to combine. Set aside for 1–2 minutes while you prepare the meat mixture — the breadcrumbs will absorb the milk and act as a binder in place of eggs.1/4 cup breadcrumbs, 1/4 cup milk
- In a large mixing bowl, combine the ground beef, finely diced onion, salt, chopped parsley, a generous pinch of freshly ground black pepper, and the milk-soaked breadcrumbs. Mix with your hands until just combined — avoid overworking, as this toughens lean beef.1 1/2 pounds lean ground beef, 1 medium onion, 2 tablespoons parsley, 1 teaspoon salt, 1 pinch ground black pepper
- Wet your hands to prevent sticking and roll the mixture into balls about 1 inch (2.5cm) in diameter — roughly the size of a walnut. You should get 20–24 meatballs. Place them on a rimmed baking sheet or plate as you go. Roll all the meatballs before you start cooking.
- Heat 1 tablespoon sunflower oil in a 10-inch / 26cm non-stick skillet over medium-high heat. Working in batches to avoid crowding, sear the meatballs for 2–3 minutes per side until evenly browned. They do not need to be cooked through — they will finish in the gravy. Transfer browned meatballs to a clean plate.1 tablespoon sunflower oil
- In a medium saucepan, melt 1 teaspoon of butter or oil over medium heat. Add 1 tablespoon of flour and whisk constantly for 1–2 minutes until the roux turns a light golden colour and smells nutty. Gradually pour in 1 cup (240ml) of hot beef stock, whisking continuously to prevent lumps. Bring to a gentle boil, then reduce heat to low. The gravy should thicken within 2–3 minutes.1 teaspoon butter, 1 tablespoon all purpose flour (plain flour Australia and UK), 1 cup beef stock (beef broth or beef bouillon)
- Gently place the seared meatballs into the gravy. Cover the saucepan and simmer over low heat for 15–20 minutes, stirring once or twice, until the meatballs reach an internal temperature of 165°F / 74°C on an instant-read thermometer.
- Serve the meatballs and gravy over mashed potatoes, egg noodles, or rice. Garnish with chopped fresh parsley and serve with lingonberry, cranberry, or cowberry sauce on the side.2 tablespoons parsley
Notes
Nutrition
Common questions
Do I need eggs to bind these meatballs?
No — the soaked breadcrumbs do the binding work here. Eggs add richness but also make the texture firmer; leaving them out actually keeps these meatballs softer, which is what you want with lean beef.
Can I bake the meatballs instead of frying them?
Yes, but you’ll miss the browned crust that adds flavor to the gravy. If you bake at 400°F (200°C) for 18–20 minutes, deglaze the baking tray with a splash of broth and add those drippings to your gravy to recover some of that flavor.
How do I know when the meatballs are fully cooked through?
Ground beef must reach an internal temperature of 160°F (71°C). After the initial pan sear, the 15–20 minute simmer in the gravy will take them there — but if your meatballs are on the larger side, use an instant-read thermometer to check the center of one.
Can I make the meatballs ahead and refrigerate them uncooked?
Yes, up to 24 hours. Roll them, place on a tray, cover tightly with plastic wrap, and refrigerate. Bring them out for 10 minutes before frying so they’re not ice-cold in the center when they hit the pan.
Can I double the batch and freeze half?
Absolutely — this recipe scales well. Cook the full double batch, portion into meal-sized containers with gravy, cool completely, and freeze for up to 3 months. The gravy protects the meatballs from freezer dryness better than freezing them plain.
My gravy turned out very pale — is that normal?
It depends on how long you toasted the flour. A short toast gives a light, mild gravy; cooking the flour until it smells nutty and turns a light tan produces a deeper color and more flavor. Lean beef also releases less browning drippings than fattier blends, so the gravy from this recipe will naturally be lighter than a traditional version.
What to cook next
- Hearty Beef Mushroom Stroganoff
- Swedish Dill Pork Sausage
- Venison Cranberry Holiday Meatballs
- Olive Beef Polpette Perfection










