A cozy, plant-based twist on a Scandinavian classic — juicy vegan meatballs served in a silky creamy gravy, ideal over mashed potatoes or pasta.
Why You’ll Love This Recipe
This recipe delivers the comforting flavors of traditional Swedish meatballs — warm spices like allspice and nutmeg, rich cream-style gravy, satisfying “meaty” texture — but in a fully vegan form. The combination of hearty plant-based ingredients and comforting sauce makes it perfect for both family dinners and special occasions. Plus, it’s hearty, adaptable (gluten-free, soy-free options possible), and holds up for make-ahead or freezer-friendly meal prep.
Ingredients
(Tip: You’ll find the full list of ingredients and measurements in the recipe card below.)
For the Meatballs
½ cup (100 g) dry brown or green lentils
1½ cups (360 ml) water
1 tablespoon oil (for sautéing)
1 onion, diced
4 garlic cloves, minced
1 cup (150 g) mushrooms, roughly chopped
2 teaspoons ground cumin
¾ cup (70 g) rolled oats (use gluten-free if needed)
3 tablespoons soy sauce or tamari (for gluten-free)
½ cup vegan cream (unsweetened) or full-fat coconut milk
1 tablespoon vegan Worcestershire sauce
1 teaspoon Dijon mustard
Salt and ground black pepper, to taste
To Serve (optional)
Mashed potatoes or cooked pasta
Chopped fresh parsley for garnish
Lingonberry jam or preserved lingonberries (for a Scandinavian touch)
Directions
Cook the lentils: Rinse the lentils and combine with the 1½ cups water in a small pot. Bring to a boil, then reduce heat and simmer until the lentils are tender (about 20 minutes). Drain any excess liquid and set aside.
While lentils cook, sauté vegetables: In a skillet over medium heat, add the oil and onion. Cook until onion is translucent, then add garlic and mushrooms and sauté until the mushrooms are tender. Stir in the ground cumin, nutmeg, allspice, salt, and pepper; cook briefly to release the aroma. Remove from heat.
Make the meatball base: In a food processor, add the oats and pulse into a coarse flour. Then add cooked lentils, sautéed onion/mushroom mixture, soy sauce, parsley, and pulse until the mixture is combined but still has some texture (not completely puréed). If the mixture is too loose, you may add a few tablespoons of breadcrumbs or more oats to bind.
Form meatballs: Use moist hands to shape the mixture into balls (about 1½ tablespoon size, or ~1-inch diameter). Place them on a plate.
Brown meatballs: Heat a little oil in a large skillet over medium heat. Add the meatballs in batches (do not overcrowd the pan) and brown on all sides (about 2-3 minutes per side) until nicely golden. Transfer the browned meatballs to a plate and set aside.
Make the gravy: In the same skillet, melt the vegan butter over medium heat. Sprinkle in the flour and whisk for about 30 seconds to form a roux. Gradually pour in the vegetable broth a little at a time, whisking constantly to prevent lumps. Once all broth is incorporated, stir in the vegan cream, vegan Worcestershire sauce, and Dijon mustard. Continue to whisk and simmer until the gravy thickens (2-3 minutes). Season with salt and black pepper to taste.
Combine & finish: Return the browned meatballs into the gravy, reduce heat to low, and simmer uncovered for 8-10 minutes, stirring occasionally so the meatballs absorb the sauce and stay warm.
Serve: Spoon mashed potatoes or cooked pasta onto plates, nestle the vegan Swedish meatballs in the creamy gravy over top, garnish with parsley (and lingonberry jam on the side if desired).
Servings and timing
Makes approximately 4 servings.
Prep time: ~15 minutes
Cook time: ~30 minutes
Total time: ~45 minutes
Variations
Gluten-free version: Use gluten-free oats or gluten-free breadcrumbs, substitute gluten-free flour for the gravy.
Soy-free version: Use tamari alternative or coconut aminos in place of soy sauce; ensure Worcestershire sauce is vegan & soy-free or use a soy-free substitute.
Mushroom-free version: Replace mushrooms with finely chopped zucchini or grated carrot for texture.
Spice-up version: Add smoked paprika or a pinch of cayenne for a slightly spicier kick.
Mini meatball appetizer version: Roll the mixture into smaller bite-sized balls and serve with skewers and sauce as a party appetizer.
Lower-carb serving: Serve the meatballs and gravy over cauliflower mash instead of potatoes or pasta.
Storage/Reheating
Refrigerator: Store leftovers (meatballs + gravy together) in an airtight container in the fridge for up to 3–4 days.
Freezer: Freeze the meatballs (preferably without sauce) on a baking sheet until firm, then transfer to a freezer-safe bag or container for up to 3 months. Freeze gravy in its own container. To reheat, thaw overnight in fridge, then warm meatballs in a 350 °F (175 °C) oven for 10-15 minutes or until hot, and warm gravy in a saucepan until bubbling, then combine.
Reheating: On the stove over medium-low heat, gently warm the meatballs in the gravy until heated through (about 5-7 minutes), stirring occasionally.
Tip: If reheated gravy is too thick, stir in a splash of vegetable broth or plant-milk to loosen it.
FAQs
What gives the meatballs their “meaty” texture if there’s no meat?
The combination of cooked lentils, oats or breadcrumbs, mushrooms, and seasonings gives structure and chew. Sautéing the mushrooms also adds depth of flavor and a slightly meaty bite.
Can I use store-bought vegan meatballs instead of making them from scratch?
Yes — you can substitute ready-made vegan meatballs. Brown them in the skillet, then prepare the gravy and heat the meatballs in the sauce before serving.
Can I make these ahead of time for a party or dinner gathering?
Absolutely. You can prepare the meatball mixture the day before, roll them and refrigerate (or freeze). Brown and finish in the gravy just before serving for best texture.
Are these meatballs nut-free?
Yes — the recipe above uses lentils and oats and is free of nuts. If you choose to add walnuts (in some versions) or other nuts, modify accordingly. Always check all ingredients if you have nut allergies.
What can I serve with these vegan Swedish meatballs?
Traditional choices include mashed potatoes, boiled potatoes, or pasta. You can also serve with cauliflower mash, rice, quinoa, or roasted root vegetables. Lingonberry jam on the side adds a Scandinavian touch.
How do I make the gravy thicker or thinner?
If you want thicker gravy, reduce the amount of broth or let it simmer a little longer uncovered. If you prefer thinner gravy, stir in an extra ¼ to ½ cup vegetable broth or plant-milk.
Can I make this gluten-free?
Yes — swap in gluten-free oats or breadcrumbs, use a gluten-free flour for the roux, and ensure your vegan Worcestershire sauce is gluten-free.
How can I freeze and reheat without the meatballs falling apart?
Freeze meatballs separately on a sheet until solid, then transfer to a bag; store sauce separately. Reheat the meatballs slightly in the oven before adding to warm gravy to preserve texture.
Can I make a larger batch and use for meal prep?
Definitely. This recipe scales well. Make a double batch and freeze portions in meal-prep containers. On busy days, simply reheat and serve over quick sides.
Conclusion
These vegan Swedish meatballs offer all the comforting richness of the classic dish without animal products — warm spices, creamy gravy, satisfying texture. Whether you’re cooking for vegans, curious omnivores, or simply craving something cozy and plant-based, this recipe hits the mark. With easy make-ahead options and freezer-friendly storage, it’s a go-to for casual weeknight dinners or hosting. Enjoy!
A cozy, plant-based twist on the classic Swedish dish — these vegan meatballs made from lentils, mushrooms, and oats are served in a silky dairy-free gravy. Perfect over mashed potatoes or pasta for a satisfying comfort meal.
Ingredients
For the Meatballs:
½ cup (100 g) dry brown or green lentils
1½ cups (360 ml) water
1 tbsp oil
1 onion, diced
4 garlic cloves, minced
1 cup (150 g) mushrooms, chopped
2 tsp ground cumin
¾ cup (70 g) rolled oats
3 tbsp soy sauce or tamari
½ tsp salt
½ tsp ground black pepper
⅓ tsp ground nutmeg
¼ tsp ground allspice
3 tbsp chopped fresh parsley (or 1 tbsp dried)
For the Gravy:
3 tbsp vegan butter
4 tbsp all-purpose flour (or GF substitute)
2 cups vegetable broth
½ cup unsweetened vegan cream or full-fat coconut milk
1 tbsp vegan Worcestershire sauce
1 tsp Dijon mustard
Salt and black pepper to taste
Optional for Serving:
Mashed potatoes or pasta
Chopped fresh parsley
Lingonberry jam
Instructions
Cook the lentils: Rinse lentils, combine with water, bring to a boil, then simmer ~20 min until tender. Drain and set aside.
Sauté the veggies: In a skillet, heat oil and cook onion until translucent. Add garlic and mushrooms; cook until soft. Stir in cumin, nutmeg, allspice, salt, and pepper. Set aside.
Make meatball mix: Pulse oats in a food processor until coarse. Add lentils, sautéed mixture, soy sauce, parsley. Pulse to a textured mix. Add breadcrumbs/oats if too loose.
Shape meatballs: Form into ~1-inch balls using wet hands.
Brown meatballs: In a skillet with oil, brown meatballs on all sides, ~2–3 minutes per side. Set aside.
Make gravy: In the same pan, melt butter. Add flour and whisk to form roux. Gradually add broth, whisking constantly. Stir in vegan cream, Worcestershire, and mustard. Simmer until thickened. Season to taste.
Combine & finish: Add meatballs back to skillet. Simmer in gravy for 8–10 min on low heat, stirring gently.
Serve: Over mashed potatoes or pasta. Garnish with parsley and lingonberry jam if desired.
Notes
Gluten-Free: Use GF oats, flour, and tamari.
Make-Ahead: Meatballs can be shaped and chilled up to 24 hrs before cooking.
Freezer-Friendly: Freeze cooked meatballs separately from sauce for best texture.
Gravy Adjustments: Add more broth to thin, or simmer longer to thicken.