These Swedish-style soy meatballs are a plant-based take on the browned, gently spiced meatballs often served with creamy gravy, potatoes, and lingonberry jam. Rehydrated soy mince, breadcrumbs, and ground flax make tender, savory bites, while a quick pan gravy brings the plate together.
Ingredients
- 1½ cups (90 g) dry textured vegetable protein (TVP) soy mince
- 1 cup (240 ml) hot vegetable broth, for rehydrating the soy mince
- 1 tablespoon (7 g) ground flaxseed
- 3 tablespoons (45 ml) water, for the flax binder
- ½ cup (55 g) plain breadcrumbs
- ¼ cup (25 g) finely grated yellow onion, lightly squeezed if very wet
- 1 small garlic clove (3 g), finely grated or minced
- ½ teaspoon (1 g) ground allspice
- ¼ teaspoon (0.5 g) ground nutmeg
- ½ teaspoon (3 g) fine salt
- ¼ teaspoon (0.5 g) black pepper
- 2 tablespoons (30 ml) neutral cooking oil, divided
- 2 tablespoons (16 g) all-purpose flour
- 1½ cups (360 ml) vegetable broth, for the gravy
- ½ cup (120 ml) heavy cream or unsweetened oat cream
- 1 teaspoon (5 ml) soy sauce
- 1 teaspoon (5 ml) Dijon mustard
- 1 tablespoon (15 ml) chopped fresh parsley, optional
Instructions
- Rehydrate the soy mince. Put the dry TVP in a heatproof bowl and pour over 1 cup (240 ml) hot vegetable broth. Stir once, cover, and leave for 10 minutes. The pieces should be soft and evenly hydrated, with little or no liquid left in the bowl. If broth remains, drain it well so the meatball mixture does not become loose.
- Make the binder and seasonings. While the TVP soaks, stir the ground flaxseed and water together in a small bowl. Leave it for about 5 minutes, until it thickens. In a larger bowl, mix the breadcrumbs, grated onion, garlic, allspice, nutmeg, salt, and pepper.
- Mix and shape. Add the hydrated soy mince and thickened flax mixture to the breadcrumb bowl. Stir firmly, then use your hands to press the mixture together until it holds when squeezed. Shape it into about 20 balls, each roughly 1½ inches (4 cm) wide. If the mixture feels crumbly, knead it for another minute before shaping; if it feels wet, add breadcrumbs 1 tablespoon (7 g) at a time.
- Brown the meatballs. Heat 1 tablespoon (15 ml) oil in a large skillet over medium heat. Add half the meatballs in a single layer, leaving room to turn them. Cook for 5–6 minutes, turning every minute or two, until browned on several sides. Transfer to a plate and repeat with the remaining oil and meatballs. Browning builds flavor and helps the outside hold together; the soy mince is already hydrated, so avoid scorching the surface.
- Start the gravy. Reduce the heat to medium-low. Sprinkle the flour into the skillet and stir for about 1 minute, scraping up any browned bits. Slowly whisk in the 1½ cups (360 ml) vegetable broth, a little at a time, until smooth. Bring it to a gentle simmer and stir for 3–4 minutes, until it begins to thicken.
- Finish the sauce. Stir in the cream, soy sauce, and Dijon mustard. Keep the sauce at a gentle simmer for 3–4 minutes, stirring often. Do not let it boil hard, especially if using oat cream, as vigorous boiling can make some plant creams separate. Taste the gravy and adjust the salt and pepper if needed.
- Warm through and serve. Return the browned meatballs to the skillet and turn them gently in the gravy. Simmer for 5 minutes, until hot throughout and coated with sauce. Sprinkle with parsley if using. Serve right away with potatoes and something tart or crisp alongside.
Tips
- Choose the right soy mince. This recipe uses dry textured vegetable protein, often sold as TVP or soy mince. Small or medium granules make the most cohesive texture. Large chunks need chopping after soaking, and a very fine soy mince may need an extra tablespoon or two of breadcrumbs.
- Keep the mixture compact, not soggy. Drain any broth that has not been absorbed and squeeze very wet grated onion. A soft mixture can still shape well if you press it firmly. Add breadcrumbs gradually rather than tipping in a lot at once, since too many can make the centers dry.
- Brown in batches. Crowding traps steam and makes the balls more likely to break when turned. Use a wide skillet or cook in three batches if necessary. Let each side develop color before moving the balls; frequent early stirring can tear the surface.
- Adjust the gravy gently. If it thickens too much, whisk in broth 1 tablespoon (15 ml) at a time. If it is thin, simmer it for another minute or two before adding the meatballs back. Taste before adding more salt because broth and soy sauce can both be salty.
Serving Suggestions
For a familiar Swedish-style plate, spoon the meatballs and gravy over boiled potatoes or creamy mashed potatoes, then add lingonberry jam. Lingonberries have a tart, slightly bitter edge that balances the rich sauce. They can be difficult to find outside Scandinavian shops; cranberry sauce or whole-berry cranberry relish is a practical substitute, though it is usually sweeter and less sharply tart. Taste it before serving, and use a modest spoonful.
Other good sides include buttered egg noodles, roasted root vegetables, or a simple cucumber salad dressed with vinegar, a little sugar, salt, and dill. A crisp salad or quick-pickled cucumber adds contrast to the soft meatballs and creamy gravy. If serving a group, keep the gravy and meatballs together in a warm serving dish and put the potatoes and tart accompaniments in separate bowls so everyone can choose their portions.
Variations
Make it dairy-free. Use unsweetened oat cream in place of heavy cream and confirm that the vegetable broth and breadcrumbs are dairy-free. Oat cream tends to give a slightly sweeter, cereal-like note and may be thinner than dairy cream, so simmer the gravy gently until it reaches the texture you like. Avoid sweetened or flavored milk alternatives.
Use a different binder. If you do not have flaxseed, mix 1 tablespoon (8 g) chia seeds with 3 tablespoons (45 ml) water and let it gel for 5–10 minutes before adding it. The texture may be a little more noticeable. A chicken egg is another possible binder for a non-vegan version; if you use egg, cook the egg-containing meatballs to 160°F (71°C), the USDA FSIS safe minimum internal temperature for egg dishes, checked with a food thermometer.
Change the seasoning carefully. A pinch of ground ginger can add warmth, while a little extra allspice makes the flavor more pronounced. Keep additions small so they do not overpower the creamy sauce. For a brighter gravy, add ½ teaspoon (2.5 ml) lemon juice after turning off the heat; it will taste fresher but less traditionally mellow.
Make smaller or larger balls. Smaller balls brown faster and are convenient for a buffet, while larger ones take longer to heat through. Keep them close to the same size so they cook evenly. If shaping very small balls, lower the browning time and watch closely rather than relying only on the recipe’s timing.
Storage and Reheating
Refrigerate leftovers within 2 hours of cooking. Store the meatballs and gravy together in a covered, airtight container for 3–4 days in the refrigerator. The sauce may thicken as it chills, and the meatballs will soften slightly as they absorb it; this is normal. Keep potatoes or other sides in a separate container so they do not become waterlogged.
For reheating, put the portion in a covered saucepan over low to medium-low heat. Add a splash of broth or water, stir carefully, and heat until steaming, turning the meatballs so the centers warm evenly. USDA FSIS recommends reheating leftovers to 165°F (74°C); check the center of a meatball with a food thermometer. You can also microwave a covered portion in short intervals, stirring the gravy and rotating the meatballs between intervals, then check that same temperature. Avoid repeated cycles of cooling and reheating.
To freeze, cool the meatballs and gravy promptly, portion them into freezer-safe containers, and freeze for up to 2 months for best texture. Thaw overnight in the refrigerator, then reheat as above to 165°F (74°C). Cream-based gravy can separate slightly after freezing; warm it slowly and stir or whisk gently to bring it back together. Freezing is optional, not a substitute for prompt refrigeration.
Frequently Asked Questions
Are Swedish soy meatballs a traditional Swedish dish?
These are a plant-based, Swedish-style adaptation, not a claim about a single traditional recipe. Swedish meatballs have regional and family variations, and soy mince is used here to make a meat-free version with familiar warm spices and creamy gravy. Serve it with potatoes and lingonberries or a tart substitute for a Scandinavian-inspired meal.
Can I use fresh soy mince instead of dry TVP?
Yes, if it is a plain, unseasoned soy mince intended for cooking. Skip the hot broth and rehydration step, then mix the fresh mince with the remaining ingredients. Because fresh products vary in moisture, start with the listed breadcrumbs and add a little more only if the mixture will not hold its shape. Follow any package directions for cooking and storage.
Why are my meatballs falling apart?
The usual causes are excess liquid, insufficient mixing, or turning them before a crust forms. Drain unabsorbed broth, squeeze very wet onion, and press the mixture firmly while shaping. If the balls are still fragile, mix in breadcrumbs a tablespoon at a time. Let them brown undisturbed for a few minutes before turning, and use a thin spatula or spoon to roll them gently.
Can I make the meatballs ahead?
You can shape them up to 1 day ahead and keep them covered in the refrigerator, then brown and finish the gravy shortly before serving. You can also cook the full recipe a day in advance and refrigerate it within 2 hours. Reheat gently with a splash of broth, checking that the meatballs reach 165°F (74°C) as recommended for leftovers.
What can I use instead of lingonberry jam?
Whole-berry cranberry sauce, cranberry relish, or a tart red-currant preserve are useful substitutes. They will not taste exactly like lingonberries: cranberry sauce is often sweeter, while red-currant preserve can be softer and more jam-like. A quick cucumber pickle or vinegar-dressed salad also gives the plate a bright contrast if you would rather skip fruit preserves.
Can I bake the soy meatballs instead of pan-frying?
Yes. Arrange the shaped balls on a lightly oiled, parchment-lined sheet and bake at 400°F (200°C) for about 18–22 minutes, turning once, until browned and firm. Ovens and ball sizes differ, so begin checking at 18 minutes. They may be less evenly browned than skillet-cooked meatballs, but you can still add them to the finished gravy and simmer for 5 minutes.
Related
- Shank Steak Recipe: Slow-Braised Beef That Turns Tender
- Ground Pork Sausage Recipe for Juicy Breakfast Patties
- Shank Beef Curry: Slow-Braised and Richly Spiced
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).