Vegan Swedish Meatball Magic

by Mary Jackson
Vegan Swedish Meatballs with Silky Brown Gravy

These are lentil-and-mushroom meatballs seasoned with allspice, white pepper, and nutmeg, served in a toasted-roux brown gravy with oat milk. The honest reason to make them: they hold up well in the fridge, reheat without falling apart, and a single batch covers several weeknight dinners without much extra effort.

About the ingredients

  • Nutritional yeast: Adds savory depth that the lentils alone won’t provide. Find it in the bulk or health-food aisle — the flaked kind works better here than powdered.
  • Allspice: This is the flavor that makes these taste distinctly Swedish rather than generic. Don’t swap it for mixed spice or pumpkin pie spice; the ratios are different.
  • Oat milk for the gravy: Use an unsweetened, barista-style oat milk if you can. Thin or sweetened varieties will make the gravy watery and slightly off in flavor.
  • Soy sauce: Tamari works as a 1:1 swap if you need gluten-free. Coconut aminos will work but the gravy will taste slightly sweeter.
  • Lingonberry jam: IKEA carries it, as do most Scandinavian import shops. If you can’t find it, a tart red-currant jam is the closest substitute — skip strawberry or raspberry, they’re too sweet.

The short version of why this works

Two things actually matter here. First, the mushrooms need to cook down until all their moisture is gone and they start to brown — stop too early and the mixture will be wet, the meatballs won’t hold their shape, and the flavor will be flat. Second, the roux for the gravy has to be toasted past the raw-flour stage, stirring constantly until it smells nutty, before any liquid goes in. That step is what gives the gravy a real savory backbone instead of tasting like pale thickened oat milk.

Common problems and fixes

  • Meatballs crack or crumble when rolling: The mixture is too dry. Add one tablespoon of water at a time and mix before rolling again. Over-processed lentils can also cause this — you want some texture, not a paste.
  • Meatballs fall apart in the pan: The mixture is too wet, usually because the mushrooms weren’t cooked down enough. Spread the mixture on a plate and refrigerate for 20 minutes — it firms up significantly and is much easier to handle.
  • Gravy turns lumpy: The liquid was added too fast or the roux was too hot. Pull the pan off the heat, whisk hard, and add liquid in a slow, steady stream while whisking. A brief blast with an immersion blender rescues a lumpy gravy completely.
  • Gravy tastes bland: Taste before serving and add soy sauce in small increments — the salt level of oat milk varies by brand and can throw off the seasoning. A pinch of white pepper at the end also helps.
  • Meatballs turn dense and heavy after reheating: They were overcooked the first time. Pull them from the oven as soon as the outside is set and firm — they continue cooking slightly as they cool, and a shorter initial cook means they reheat without turning rubbery.

Make-ahead notes

The meatballs and gravy store separately in the fridge for up to four days — keep them apart so the meatballs don’t absorb all the gravy and turn soft. For longer storage, freeze the cooked meatballs on a baking sheet until solid, then transfer to a freezer bag; they keep for up to two months. The gravy freezes reasonably well but may separate slightly on thawing — a quick whisk over low heat brings it back together. To reheat, warm the gravy in a saucepan over medium-low, add the meatballs directly to the pan, cover, and heat for about eight minutes. Skip reheating them in the oven — it dries them out faster than the stovetop method does.

Vegan Swedish Meatballs With Silky Brown Gravy

Vegan Swedish Meatballs with Silky Brown Gravy

Vegan Swedish Meatball Magic - Vegan Swedish Meatballs - 7:17 PmMary Jackson
Lentils and finely chopped mushrooms form the base of these tender, allspice-and-white-pepper-seasoned meatballs, which are served in a plant-based brown gravy built from a toasted roux. Lingonberry jam on the side adds the sweet-tart contrast traditional to Swedish köttbullar. The full dish takes roughly an hour.
No ratings yet
Prep Time 30 minutes
Cook Time 32 minutes
Total Time 1 hour 2 minutes
Course Main Course
Cuisine Other European
Servings 4 plates
Calories 586 kcal

Equipment

  • Large nonstick or well-seasoned skillet
  • rimmed baking sheet
  • Parchment paper
  • Food processor (or potato masher as alternative)
  • Mixing bowls
  • Whisk
  • Measuring cups and spoons
  • Spatula or wooden spoon
  • Oven preheated to 400°F (205°C)

Ingredients
 
 

For the Vegan Swedish Meatballs:

  • 1 tbsp ground flaxseed to make a flax "egg"
  • 3 tbsp water for hydrating flaxseed
  • 1 tbsp extra-virgin olive oil for sautéing aromatics; use a fresh, fruity oil for best flavor
  • 1 small yellow onion, finely minced about 1 cup when minced; choose a firm, sweet onion
  • 8 oz cremini mushrooms, finely chopped stems included; wipe clean, do not wash to avoid excess moisture
  • ½ tsp kosher salt for aromatics; Diamond Crystal preferred; adjust if using Morton’s
  • 2 cloves garlic, minced freshly minced for best aroma
  • ½ tsp ground allspice freshly ground if possible for brighter flavor
  • ½ tsp ground white pepper classic Swedish seasoning; adjust to taste
  • ¼ tsp ground nutmeg a subtle background warmth; freshly grated preferred
  • 1 ½ cups cooked brown or green lentils, well-drained from about 1 (15-oz) can; rinse and pat dry for best texture
  • 1 tbsp nutritional yeast adds savory depth (optional but recommended)
  • 2 tbsp low-sodium soy sauce or tamari for umami and seasoning; use tamari for gluten-free
  • 1 tbsp Dijon mustard adds subtle tang and complexity
  • 2 tbsp fresh parsley, finely chopped stems tender parts included; optional garnish and mix-in
  • ½ cup panko breadcrumbs choose a brand that stays crisp; gluten-free panko works too
  • ¼ cup unsweetened oat milk or other neutral plant milk; just enough to moisten the mix
  • ½ tsp kosher salt to season the mixture; adjust to taste
  • 2 tbsp neutral high-heat oil such as avocado or canola, for searing the meatballs

For the Creamy Gravy:

  • 3 tbsp vegan butter look for brands that brown nicely (Miyoko’s, Earth Balance)
  • 3 tbsp all-purpose flour scoop-and-level; for gluten-free use a 1:1 baking blend by weight equivalence
  • 2 cups low-sodium vegetable broth, warmed warm broth incorporates more smoothly into the roux
  • 1 cup unsweetened oat milk or barista-style plant cream oat keeps it classic and silky; cashew cream works beautifully too
  • 1 tbsp low-sodium soy sauce or tamari layers umami and color in the gravy
  • 1 tsp Dijon mustard balances richness
  • 1 tsp apple cider vinegar or lemon juice; brightens the finish
  • ¼ tsp ground white pepper classic Swedish profile; add more to taste at the end
  • tsp ground allspice a pinch reinforces the meatball’s spice notes
  • ¼ tsp kosher salt or to taste, depending on broth and soy sauce salinity

To Serve (Optional):

  • 4 cups creamy mashed potatoes or buttered wide noodles classic accompaniment; use vegan butter for both options
  • 4 tbsp lingonberry jam traditionally served; look for Scandinavian brands or IKEA
  • 2 tbsp fresh parsley or dill, chopped for garnish and fresh aroma

Instructions
 

  • Preheat the Oven: Set the oven to 400°F (205°C). Line a rimmed baking sheet with parchment for easy cleanup.
  • Make the Flax Egg (2 minutes): In a small bowl, whisk together 1 tbsp ground flaxseed and 3 tbsp water. Let sit 5 minutes to thicken until gelled.
  • Sauté Aromatics (8–10 minutes): Heat 1 tbsp olive oil over medium heat. Add onion, mushrooms, and 1/2 tsp kosher salt. Cook, stirring occasionally, until the mushrooms release their moisture and everything turns golden brown with some fond on the pan. Add garlic and cook 1 minute until fragrant. Sprinkle in 1/2 tsp allspice, 1/2 tsp white pepper, and 1/4 tsp nutmeg; stir 30 seconds to bloom the spices. Remove from heat to cool slightly.
  • Pulse the Mixture (2–3 minutes): In a food processor, combine the sautéed mixture with lentils, nutritional yeast, 2 tbsp soy sauce, and 1 tbsp Dijon. Pulse 8–10 short bursts until cohesive but still textured—aim for a mixture that holds together when pressed, with tiny visible bits of lentil and mushroom. No processor? Finely mince the mushrooms and onion, then mash everything together with a potato masher.
  • Bind and Rest (10 minutes): Transfer to a bowl. Stir in the flax egg, parsley, panko, and 1/4 cup oat milk. Season with the remaining 1/2 tsp kosher salt. Mix until evenly hydrated and scoopable—moist but not sticky. Let the mixture rest 10 minutes so the breadcrumbs fully hydrate.
  • Form the Meatballs (5–7 minutes): With damp hands or a 1-tbsp scoop, form 20–24 balls about 1 inch in diameter. Roll gently for smooth sides; this helps even browning.
  • Sear (about 8 minutes): Heat 2 tbsp neutral oil in a large skillet over medium-high heat. When shimmering, add meatballs in a single layer without crowding. Sear 2–3 minutes per side until deeply golden. Transfer to the prepared baking sheet.
  • Bake (16 minutes at 400°F/205°C): Slide the sheet into the oven and bake until the meatballs are set and lightly crisped on the outside. They should feel firm yet springy when gently pressed.
  • Start the Gravy: (make a blond roux) (2–3 minutes) Return the skillet to medium heat. Add vegan butter; once melted and foamy, whisk in flour. Cook, whisking, until the roux smells nutty and turns pale blond—avoid browning for a classic Swedish-style gravy.
  • Build the Gravy (6 minutes). Gradually whisk in warm vegetable broth, a splash at a time, until smooth and lump-free. Simmer 3 minutes to thicken slightly. Whisk in oat milk, 1 tbsp soy sauce, 1 tsp Dijon, 1/4 tsp white pepper, and a pinch (1/8 tsp) of allspice. Simmer 2–3 minutes more until silky and nappe (it should coat the back of a spoon). Stir in 1 tsp apple cider vinegar and 1/4 tsp kosher salt, adjusting to taste.
  • Coat and Finish (1–2 minutes). Add the baked meatballs to the gravy and toss gently over low heat until coated and warmed through. If the gravy thickens too much, splash in a bit of warm broth or oat milk to loosen.
  • Serve. Spoon over creamy mashed potatoes or wide noodles. Garnish with chopped parsley or dill and a spoonful of lingonberry jam for the iconic sweet-tart counterpoint.

Notes

Mary’s Tips: 

  • Texture is Everything: Pulse just enough to bring the mixture together—overprocessing makes the meatballs dense. Visible lentil and mushroom flecks signal the right grind.
  • Chill for Extra-Firm Balls: If your mixture feels soft, refrigerate 20–30 minutes. Cold fat from the sauté and hydrated breadcrumbs will help the meatballs hold shape.
  • Gluten-Free: Use gluten-free panko and tamari; swap AP flour in the gravy for a 1:1 gluten-free baking blend.
  • No Soy? Replace soy sauce with coconut aminos and season with additional salt to taste.
  • Cashew-Cream Gravy: Blend 1/2 cup raw cashews with 1/2 cup water until silky; use in place of the oat milk for ultra-luxurious body.
  • Fast Caramelization Trick: Add a tiny pinch of sugar to the onions and mushrooms as they sauté to encourage deeper browning without burning.
  • Make Ahead: Form and par-bake meatballs for 10 minutes; cool and refrigerate up to 3 days or freeze up to 2 months. Reheat in gravy until hot.
  • Alternative Protein: Swap 1 cup of lentils with 8 oz rehydrated TVP for a bouncier bite; season generously.

Serving Suggestions: 

  • Plating: Nestle a mound of buttery vegan mashed potatoes on a warm plate. Top with glossy, taupe-hued meatballs and cascade with gravy. A ruby spoon of lingonberry jam and a sprinkle of emerald herbs create a striking color trio.
  • Sides: Try a quick-pressed cucumber salad with dill and white vinegar, or simply steamed green beans with lemon zest.
  • Drinks: Dry apple cider, a crisp pilsner, or sparkling water with lemon keeps the palate refreshed.
  • Doneness Cues: Meatballs should be evenly bronzed, lightly crisped outside, moist and tender inside; gravy should coat the back of a spoon without pooling liquid.

Culinary Context: 

Swedish meatballs are traditionally spiced with allspice and white pepper and served with brown gravy and lingonberry jam. This plant-based version honors that balance of savory, creamy, and bright while leaning on Nordic minimalism—restrained ingredients, impeccable technique.

Optional Advanced Instructions: 

  • Batching: Double the recipe and freeze the baked meatballs on a sheet pan, then transfer to freezer bags. Reheat directly in simmering gravy 8–10 minutes.
  • Parallel Prep: While the meatballs bake, make the roux and start the gravy; this keeps total cook time efficient.
  • No Food Processor: Mince mushrooms very finely and mash lentils with a fork or masher. The texture will be slightly chunkier but still delightful.

Timing: 

  • Prep Time: 30 minutes (mincing, sauté prep, pulsing, forming)
  • Cook Time: 32 minutes total (sear 8 minutes + bake 16 minutes + gravy 8 minutes)
  • Total Time: 62 minutes (1:02)Course & Cuisine

Course: 

Dinner, Main Course

Origin/Cuisine: 

Swedish, Scandinavian

Nutrition

Calories: 586kcalCarbohydrates: 83gProtein: 19gFat: 22gSaturated Fat: 3gPolyunsaturated Fat: 5gMonounsaturated Fat: 12gTrans Fat: 2gSodium: 1398mgPotassium: 1633mgFiber: 15gSugar: 16gVitamin A: 507IUVitamin C: 50mgCalcium: 204mgIron: 6mg
Keyword comfort food, Holiday, Nordic, Plant-based, Vegan Swedish Meatballs
Tried this recipe?Rate this recipe !

Common questions

Can I use canned lentils instead of cooking them from scratch?

Yes, canned lentils work fine here. Drain and rinse them thoroughly, then spread them on a clean towel and pat dry — excess moisture is the main thing that causes the mixture to be too wet to roll.

What kind of mushrooms should I use?

Cremini mushrooms give the best flavor and texture for this recipe. White button mushrooms work but taste milder; portobello caps work too, though they release more liquid and need a longer cook-down time.

Do I have to use oat milk, or can I use another plant milk?

Unsweetened soy milk is the best alternative — it’s neutral in flavor and has enough body to make a stable gravy. Almond or rice milk tend to be too thin and can make the gravy taste watery.

Can I skip the lingonberry jam?

You can, but the tart contrast is genuinely part of what makes the dish work — without it, the gravy can taste one-note. A small spoonful of tart red-currant jam or even a few drops of lemon juice stirred into a plain jam gets you close enough.

How do I stop the meatballs from sticking to the pan?

Make sure the oil is hot before the meatballs go in, and don’t move them for the first two minutes — they release naturally once a crust forms. A well-seasoned cast iron or a good nonstick pan also makes a real difference here.

Try these next

You may also like

Leave a Comment

Cooked this? Rate this recipe!




This site uses Akismet to reduce spam. Learn how your comment data is processed.