Healthiir

Spaghetti with baked lentil-walnut vegan meatballs

Baked lentil-walnut vegan meatballs that hold together, in a simple garlic marinara with spaghetti: the binder, chilling before shaping, baking and freezing.

8 min read Updated October 29, 2026
Watercolor illustration of stuffed peppers and a pot of chickpea ratatouille
Illustration (AI-generated), not a photograph of this recipe.
Serves
4
Prep
25 min
Cook
55 min
Chill
30 min
Total
1 hr 50 min

Makes About 20 meatballs and 12 oz of spaghetti, 4 servings

Ingredients

For the meatballs

  • 1 1/2 cups (295 g) cooked brown or green lentils, from about 2/3 cup dry lentils, well drained
  • 3 oz (85 g) walnut halves or pieces, about 3/4 cup
  • 2 tbsp ground flaxseed
  • 3 fl oz (about 90 g) water, 6 tbsp
  • 2 tbsp olive oil, 1 tbsp for the onion, 1 tbsp for the baking sheet
  • 1 small (about 70 g) onion, finely chopped
  • 2 cloves (about 6 g) garlic, minced
  • 1 tbsp soy sauce
  • 1 tsp dried oregano
  • 1/2 tsp fine salt
  • 1/4 tsp ground black pepper
  • 1/2 cup (54 g) plain dry breadcrumbs
  • 2 tbsp chopped fresh parsley

For the marinara

  • 1 tbsp olive oil
  • 3 cloves (about 9 g) garlic, thinly sliced
  • 28 oz (795 g) canned whole peeled tomatoes, one 28-oz can, with the juice
  • 1/4 tsp fine salt, plus more to taste
  • 1/8 tsp cayenne pepper or red pepper flakes

For the pasta

  • 12 oz (340 g) dry spaghetti
  • 1 tbsp fine salt, for the pasta water (optional)

To serve

  • 1/4 oz (7 g) fresh basil leaves, torn (optional)

Equipment

  • Medium saucepan
  • Fine-mesh sieve and colander
  • Small bowl
  • Large skillet
  • Food processor
  • Rimmed baking sheet and parchment paper
  • Large pot for the pasta
  • Large deep skillet or saucepan for the sauce

Method

  1. If cooking the lentils from dry, rinse about 2/3 cup brown or green lentils, cover them with plenty of water in a medium saucepan, bring to a boil and simmer for 20 to 25 minutes, until tender but still holding their shape. Drain very well in a sieve and let them steam dry for a few minutes; you need 1 1/2 cups.

  2. In a small bowl, stir the ground flaxseed into the 6 tbsp water and set aside for about 10 minutes, until thick and gel-like.

  3. Toast the walnuts in a dry large skillet over medium heat, stirring often, for 4 to 5 minutes, until fragrant and a shade darker. Tip them into the food processor.

  4. In the same skillet, heat 1 tbsp of the olive oil over medium heat and cook the onion with a pinch of the salt, stirring, for 6 to 8 minutes, until soft and golden at the edges. Add the minced garlic and cook for 1 minute more.

  5. Pulse the walnuts into coarse crumbs. Add the lentils, the onion and garlic, the soy sauce, oregano, remaining salt and black pepper, and pulse 8 to 10 times, scraping down once, until the mixture holds together when squeezed but still has visible bits of lentil and walnut. Do not blend it to a paste.

  6. Scrape the mixture into a bowl and stir in the flax gel, breadcrumbs and parsley until evenly combined. Cover and refrigerate for 30 minutes, until firm enough to roll without sticking to your hands.

  7. Heat the oven to 400°F (205°C). Line a rimmed baking sheet with parchment paper and brush it with the remaining 1 tbsp olive oil.

  8. Roll the mixture into about 20 balls of 2 tablespoons each, pressing each one firmly so it has no cracks, and set them on the baking sheet. Roll each ball in the oil on the parchment so it is lightly coated.

  9. Bake for 20 to 25 minutes, turning them once halfway through, until browned on the outside and firm to the touch.

  10. While the meatballs bake, make the marinara: heat the olive oil in a large deep skillet over medium-low heat, add the sliced garlic and cook for about 1 minute, until fragrant but not browned. Add the tomatoes with their juice, crush them with a potato masher or the back of a spoon, and stir in the 1/4 tsp salt and the cayenne or pepper flakes. Simmer, stirring now and then, for 20 minutes, until thickened and no longer watery.

  11. Meanwhile, bring a large pot of water to a boil with the 1 tbsp salt, if using. Cook the spaghetti until al dente, following the time on the package. Before draining, scoop out 1/2 cup of the pasta water.

  12. Add the drained spaghetti to the marinara and toss over low heat for about 1 minute, adding a splash of the pasta water if the sauce is too thick to coat the strands. Taste and add salt if needed.

  13. Divide the spaghetti among bowls, set the meatballs on top and spoon a little sauce over them. Scatter with torn basil, if using.

Nutrition per serving

Calories750
Total fat28 g
Saturated fat3.5 g
Carbohydrate102 g
Fiber16 g
Total sugars11 g
Protein26 g
Sodium990 mg
Calcium170 mg
Iron8.3 mg

Per serving, calculated from USDA FoodData Central values for the ingredients and amounts listed, leaving out the optional ingredients. Calories, fat, carbohydrate, fiber, sugars, protein and sodium are rounded with the FDA Nutrition Facts label rules; calcium is shown to the nearest 10 mg and iron to the nearest 0.1 mg. Brands differ, so treat the figures as estimates.

How these numbers were calculated

Each ingredient as weighed for the calculation and the USDA FoodData Central record its nutrients come from. Where USDA has no record for an ingredient (vegan butter, nutritional yeast, coconut sugar), the closest generic record is used and named here.

IngredientGramsUSDA record
1 1/2 cups (295 g) cooked brown or green lentils, from about 2/3 cup dry lentils, well drained 297 g FDC 172421: Lentils, mature seeds, cooked, boiled, without salt (SR Legacy). Weight from: USDA portion '1 cup'
3 oz (85 g) walnut halves or pieces, about 3/4 cup 85 g FDC 170187: Nuts, walnuts, english (SR Legacy). Weight from: 1 oz = 28.35 g
2 tbsp ground flaxseed 14 g FDC 169414: Seeds, flaxseed (SR Legacy). Weight from: USDA portion '1 tbsp, ground'
3 fl oz (about 90 g) water, 6 tbsp 90 g FDC 2710707: Water, tap (FNDDS 2021-2023). Weight from: USDA portion '1 fl oz'
2 tbsp olive oil, 1 tbsp for the onion, 1 tbsp for the baking sheet 27 g FDC 171413: Oil, olive, salad or cooking (SR Legacy). Weight from: USDA portion '1 tablespoon'
1 small (about 70 g) onion, finely chopped 70 g FDC 170000: Onions, raw (SR Legacy). Weight from: USDA portion '1 small'
2 cloves (about 6 g) garlic, minced 6 g FDC 169230: Garlic, raw (SR Legacy). Weight from: USDA portion '1 clove'
1 tbsp soy sauce 16 g FDC 2707442: Soy sauce (FNDDS 2021-2023). Weight from: USDA portion '1 tablespoon'
1 tsp dried oregano 1 g FDC 171328: Spices, oregano, dried (SR Legacy). Weight from: USDA portion '1 tsp, leaves'
1/2 tsp fine salt 3 g FDC 173468: Salt, table (SR Legacy). Weight from: USDA portion '1 tsp'
1/4 tsp ground black pepper 0.6 g FDC 170931: Spices, pepper, black (SR Legacy). Weight from: USDA portion '1 tsp, ground'
1/2 cup (54 g) plain dry breadcrumbs 54 g FDC 174928: Bread, crumbs, dry, grated, plain (SR Legacy). Weight from: USDA portion '1 cup'
2 tbsp chopped fresh parsley 7.6 g FDC 170416: Parsley, fresh (SR Legacy). Weight from: USDA portion '1 tbsp'
1 tbsp olive oil 13.5 g FDC 171413: Oil, olive, salad or cooking (SR Legacy). Weight from: USDA portion '1 tablespoon'
3 cloves (about 9 g) garlic, thinly sliced 9 g FDC 169230: Garlic, raw (SR Legacy). Weight from: USDA portion '1 clove'
28 oz (795 g) canned whole peeled tomatoes, one 28-oz can, with the juice 793.8 g FDC 170051: Tomatoes, red, ripe, canned, packed in tomato juice (SR Legacy). Weight from: 1 oz = 28.35 g
1/4 tsp fine salt, plus more to taste 1.5 g FDC 173468: Salt, table (SR Legacy). Weight from: USDA portion '1 tsp'
1/8 tsp cayenne pepper or red pepper flakes 0.2 g FDC 170932: Spices, pepper, red or cayenne (SR Legacy). Weight from: USDA portion '1 tsp'
12 oz (340 g) dry spaghetti 340.2 g FDC 169736: Pasta, dry, enriched (SR Legacy). Weight from: 1 oz = 28.35 g
1 tbsp fine salt, for the pasta water (optional) not counted (optional) FDC 173468: Salt, table (SR Legacy). Weight from: USDA portion '1 tbsp'
1/4 oz (7 g) fresh basil leaves, torn (optional) not counted (optional) FDC 172232: Basil, fresh (SR Legacy). Weight from: 1 oz = 28.35 g

Spaghetti and meatballs rebuilds well from plants. These meatballs are made from cooked brown lentils and toasted walnuts, bound with a flax gel and breadcrumbs and baked until browned, then served on spaghetti tossed in a quick garlic marinara. They hold together, they brown in the oven without being fried, and they freeze well, which makes it worth doubling the batch.

What holds lentil meatballs together

Meat binds itself as its proteins set in the heat. A lentil mixture needs help, and three things on the card provide it:

  • Partly broken-down lentils. Pulsing the lentils in the food processor crushes some of them into a sticky paste that glues the rest together. Pulse too little and there is no glue; blend too long and the mixture turns into a smooth paste that bakes up dense and pasty. The target is a mix that holds when squeezed but still shows bits of lentil and walnut.
  • A flax gel. Ground flaxseed stirred into water turns thick and gel-like in about 10 minutes. It does the job an egg would do in a meat-based meatball, holding the mixture together as it heats. For how flax compares with other replacements, see egg substitutes for vegan baking and cooking.
  • Breadcrumbs. They soak up moisture and give the meatballs body, the way a panade does in classic Italian-American meatballs.

The walnuts add fat and a rich, slightly meaty bite, and toasting them first deepens their flavor. Soy sauce adds savory depth that lentils lack on their own.

Dry lentils are the whole game

Wet lentils are a common reason vegan meatballs fall apart. Lentils that have just been drained still carry water on their surface, and that water loosens the mixture and turns to steam in the oven, pushing the balls apart. Drain them in a sieve and let them sit for a few minutes, or spread them on a towel, before they go in the processor.

Use brown or green lentils, which keep their shape when cooked. Lentils need no soaking: the University of Nebraska-Lincoln Extension notes that “Lentils, split peas and black-eyed peas do not need to be soaked.” Simmer them only until tender, 20 to 25 minutes; overcooked lentils split and hold more water. Red lentils break down completely as they cook and do not work in this recipe.

What vegan meatballs are made of: choosing a base

Vegan meatballs are built from three parts: a base that gives bulk and bite, a binder, and seasoning that supplies the savory depth meat would. The card uses lentils and walnuts, but the same method works with other bases if you adjust for how wet each one is:

BaseTextureWhat to change
Brown or green lentils with walnuts (the card)Tender, slightly coarse, holds wellNothing; drain the lentils well
ChickpeasSofter, closer to falafelPat them dry and add 2 to 3 tablespoons more breadcrumbs
Black or kidney beansSoft and dense, dark colorMash rather than pulse, and dry them well first; canned kidney beans are already cooked, while dried ones must be boiled as described in how to cook dried beans
MushroomsJuicy and very savory, but wetCook them first until their liquid has evaporated, then cool before mixing
Crumbled extra-firm tofuLight and springyPress it first; add a little more seasoning, since tofu is mild
Textured vegetable protein (TVP)Chewy, the most like ground meatRehydrate in hot broth, squeeze out the excess, and rely on the flax gel and breadcrumbs to bind it
EggplantSoft and silkyRoast until collapsed and drain in a sieve; it needs extra breadcrumbs

Whatever the base, the test before rolling is the same: a spoonful squeezed in your fist should hold together without leaving your palm wet.

Why the mixture is chilled before shaping

Straight from the processor, the mixture is soft and sticky, and it smears on your hands. After 30 minutes in the refrigerator, the breadcrumbs have absorbed moisture and the flax gel has set further. The mixture rolls cleanly into tight balls, and tight balls with no cracks are the ones that survive the oven and the sauce. If you are short of time, wet your hands lightly to roll the balls, but do not skip the chill altogether.

Baking versus pan-frying

Baking at 400°F (205°C) for 20 to 25 minutes is the easier route. All the meatballs cook at once, they brown on the bottom where they touch the oiled parchment, and turning them halfway browns a second side. They come out with a firm, slightly crisp shell and a tender middle.

Pan-frying in a few tablespoons of olive oil over medium heat gives a deeper, crustier exterior, but the meatballs are fragile while hot and break easily when turned. Fry in batches without crowding, turn them gently with two spoons, and let them form a crust on each side before moving them. Expect to use more oil and to lose one or two.

In an air fryer

Heat the air fryer to 400°F (205°C), the same temperature as the oven. Roll the chilled balls in a little oil, set them in the basket in a single layer with space between them, and cook in batches. Turn them gently with tongs halfway rather than shaking the basket, because the balls are fragile until they have a crust. Air fryers vary, so start checking after about 10 minutes; they are done when browned on all sides and firm to the touch.

Sauce at the end, not for an hour

Meat-based meatballs are often simmered in sauce for a long time. These should not be. A plant-based meatball softens as it sits in hot liquid, so set the meatballs on the sauced spaghetti and spoon a little marinara over them just before serving. If you want them warmed in the sauce, a couple of minutes of gentle heat is enough.

The marinara and the pasta

The sauce is deliberately plain: garlic softened in olive oil, a can of whole peeled tomatoes crushed in the pan, salt and a pinch of heat, simmered for 20 minutes until it loses its watery edge. Whole tomatoes crushed in the pan give a sauce with more texture than tomato purée.

Salting the pasta water seasons the spaghetti from inside. Most of that salt goes down the drain with the water, so the nutrition on the card leaves it out. A splash of the reserved starchy cooking water, tossed with the spaghetti and sauce, helps the sauce cling to the strands instead of pooling at the bottom of the bowl.

The same sauce works on pizza, and vegan margherita pizza shows how to cook it thick enough to keep a crust crisp.

Other ways to serve them

  • Meatball subs: split toasted rolls, add the meatballs and plenty of marinara, and top with melted vegan mozzarella-style cheese or a sprinkle of nutritional yeast.
  • Over polenta or mashed potatoes: soft polenta with marinara, or mashed potatoes with a mushroom gravy for a Swedish-style plate.
  • As an appetizer: serve them on toothpicks with warm marinara or a sweet-and-sour sauce for dipping. For a party, keep the sauce in a slow cooker on its warm setting and add baked meatballs a batch at a time, so they do not soften for hours in the sauce. The USDA Food Safety and Inspection Service says that “hot food must be kept hot at 140°F or warmer to prevent bacterial growth.”
  • In soup: add them to a bowl of hot vegetable broth with small pasta or greens at the table, rather than simmering them in the pot, for the same reason they stay out of the sauce.

Substitutions: what works and what does not

  • Pecans can replace walnuts one for one; raw sunflower seeds make a nut-free version with a slightly earthier taste.
  • Panko works in place of plain breadcrumbs. Quick oats, pulsed to a coarse meal, also work; use certified gluten-free oats if the meatballs are for someone with celiac disease.
  • Ground chia seeds make a gel the same way flax does. Whole chia seeds work too, though they show as small dots.
  • Tamari can replace soy sauce in the same amount. For a soy-free version, use coconut aminos, which is sweeter and less salty, so add a pinch more salt.
  • No mushrooms are needed here: the walnuts, soy sauce and browned onion supply the savory flavor that many recipes get from mushrooms.
  • Chickpeas in place of lentils give a softer, more falafel-like meatball that is harder to keep round. Red lentils do not work.

Making ahead, storing and freezing

The meatball mixture can be made a day ahead and kept covered in the refrigerator; roll and bake the next day. Baked meatballs, sauce and pasta keep best in separate containers. Refrigerate them within 2 hours of cooking at 40°F or below and eat them within 3 to 4 days, the window USDA’s Food Safety and Inspection Service gives for leftovers.

To freeze, cool the baked meatballs, spread them on a tray in the freezer until firm, then move them to a bag or container so they do not stick together. FSIS says frozen leftovers keep 3 to 4 months, adding that although safe indefinitely, they “can lose moisture and flavor when stored for longer times in the freezer”. It also notes that “It is safe to reheat frozen leftovers without thawing”: drop frozen meatballs into the sauce, or warm them on a baking sheet in the oven, until they reach 165°F on a food thermometer. When reheating the marinara, FSIS says to bring sauces to a rolling boil, then lower the heat before adding the meatballs. The marinara freezes well too; cooked spaghetti is better made fresh. You can also freeze the shaped, unbaked balls on a tray and bake them straight from the freezer; they take a few minutes longer, so judge by the browned surface and firm feel rather than the clock.

Common mistakes and how to fix them

  • Mixture too wet to roll: the lentils were not drained well. Stir in another 2 to 3 tablespoons of breadcrumbs and chill longer.
  • Mixture too dry and crumbly: add water a teaspoon at a time, or a little more flax gel, until it holds when squeezed.
  • Dense, pasty meatballs: the mixture was blended too long. Next time, pulse in short bursts and stop while you can still see pieces.
  • Cracked balls that break in the oven: roll them firmly between your palms until the surface is smooth.
  • Pale meatballs: they were not coated in oil, or the oven was not fully heated. Roll each ball in the oil on the parchment before baking.

Allergy and ingredient notes

This recipe contains tree nuts (walnuts), wheat (the spaghetti, the breadcrumbs and most soy sauce) and soy (the soy sauce). The tofu base in the table above adds soy too. For a nut-free version, use sunflower seeds as described above. For a wheat-free version, use gluten-free spaghetti, gluten-free breadcrumbs or certified gluten-free oats, and a tamari labeled gluten-free; the dish is then made with gluten-free ingredients, but check labels for cross-contact, as the NIDDK advises for people with celiac disease. Some plain breadcrumbs contain milk, so check the ingredient list if you buy them rather than making your own from vegan bread.

For another hearty main from the same section, the one-pot chickpea ratatouille is ready in less time and also keeps well for lunches.

Common questions

How do I keep vegan meatballs from falling apart?

Start with well-drained lentils, pulse the mixture only until it holds together when squeezed, and bind it with a flax gel and breadcrumbs. Chill it before rolling, press each ball firmly so it has no cracks, and bake rather than simmer them in the sauce.

What can I use instead of a flax egg in lentil meatballs?

Ground chia seeds mixed with water make a similar gel and work the same way. Without any gel, add a few more tablespoons of breadcrumbs and chill the mixture longer; the meatballs will be a little more crumbly but still hold.

Can I make lentil meatballs without nuts?

Yes. Replace the walnuts with the same weight of raw sunflower seeds, toasted the same way. The texture stays close; the flavor is a little more earthy. Check that the breadcrumbs and other ingredients are made in a nut-free facility if the allergy is severe.

Can I use canned lentils?

Yes. Rinse and drain them, then spread them on a clean towel for a few minutes to dry, because canned lentils hold more water than freshly drained ones. Brown or green lentils work; red lentils break down to a purée and do not work here.

Can I cook vegan meatballs in an air fryer?

Yes. Heat the air fryer to 400°F (205°C), oil the chilled balls lightly and cook them in a single layer, in batches, turning them gently with tongs halfway. Start checking after about 10 minutes and take them out when they are browned all over and firm.

Can you freeze vegan meatballs?

Yes. Freeze the baked, cooled meatballs on a tray, then bag them. USDA's Food Safety and Inspection Service gives 3 to 4 months for frozen leftovers, which stay safe longer but lose moisture and flavor, and says they can be reheated without thawing; warm them in sauce until they reach 165°F.

Sources

  1. USDA FoodData Central
  2. University of Nebraska-Lincoln Extension: How to Cook Dry Beans from Scratch
  3. USDA FSIS: Leftovers and Food Safety
  4. NIDDK: Eating, Diet, & Nutrition for Celiac Disease

Read next