I cook a lot of meat.
There's ground beef in my freezer right now and a pork shoulder I've been meaning to get to.

So when I say a vegan meatball earned a spot in my rotation, understand that it had to fight for it.
The first three batches I made fell apart in the pan.
Not cracked. Dissolved.
I'd roll eighteen neat spheres and pull out a tray of crumble.
The problem was never flavor, it was that I had no idea what was supposed to be holding them together without an egg.
Turns out three things are doing that job, and each one does something different.
Once I sorted that out, these got good enough that I served them over spaghetti to friends and nobody asked what was in them.
My wife went back for a third one, which she does not do for things that are merely fine.
Roasted sweet potato gives body and just enough sweetness to balance the tomato.
Lentils bring the savory, slightly meaty bite that vegetable patties usually lack.
Nutritional yeast and crushed fennel seed make them taste unmistakably Italian.
They bake in 25 minutes while a fast marinara simmers on the stove.
I'm not going to tell you they're indistinguishable from beef, because they aren't. They're just genuinely good on their own terms.
What Binds These Without Egg
Three ingredients, three separate jobs. Understanding this is the whole difference between meatballs and a tray of crumble.
An egg in a traditional meatball does two things at once. The proteins set into a net when heated, and the liquid keeps everything moist while that happens.
Nothing plant-based does both jobs alone, so you use three things.
- Ground flaxseed, the glue. Whisked with water and rested for 10 minutes, ground flax releases soluble fiber that forms a thick, viscous gel. It behaves remarkably like raw egg white and it's what physically sticks the mix to itself.
- Rolled oats, the sponge. Sweet potato and lentils both bring water. Oats swell and absorb that water, taking the mix from wet and slumping to firm and rollable.
- Breadcrumbs, the dryer. Finer and drier than oats, they mop up the surface moisture so the outside of each ball browns instead of steaming.
Take out any one of the three and you'll feel it.
No flax and they crumble. No oats and the mix is soup. No breadcrumbs and they come out of the oven pale and damp.
And one more thing that matters as much as any of them. Roast the sweet potato, never boil it.
Boiling drives water into a sweet potato. Roasting drives it out.
Every falling-apart vegan meatball I've made started with a waterlogged base.
Then chill the mix for 20 minutes before rolling, which gives the oats time to finish drinking.

Ingredients You Will Need
Two short lists. A few of these are doing jobs you might not expect, so I've flagged those.
For the Meatballs
- Sweet potatoes (1 pound), in 1 inch cubes. About one large. Roasted, then mashed and cooled.
- Cooked green or brown lentils (1 ½ cups), drained well. Canned is fine, and drain them properly. Green and brown hold their shape. Red lentils turn to purée and will not work here.
- Ground flaxseed (2 tablespoons) plus water (5 tablespoons). Ground, not whole. Whole flaxseed passes straight through and gels nothing.
- Rolled oats (½ cup). Old-fashioned rolled, not instant and not steel cut.
- Dry breadcrumbs (½ cup), plus more if needed.
- Yellow onion (½ cup), finely chopped, and garlic (3 cloves), minced.
- Nutritional yeast (3 tablespoons). Savory, faintly cheesy depth. This is what keeps a meatless ball from tasting like a vegetable patty, and there's no good substitute.
- Fennel seed (½ teaspoon), lightly crushed. The secret ingredient in Italian sausage. Crush it under the flat of a knife to wake it up. Skip it and these taste generic.
- Dried basil (1 teaspoon), dried oregano (1 teaspoon), smoked paprika (½ teaspoon).
- Salt (1 ¼ teaspoons) and black pepper (½ teaspoon).
- Olive oil (2 tablespoons), divided.
For the Marinara
- Olive oil (2 tablespoons) and garlic (4 cloves), thinly sliced. Sliced rather than minced so it perfumes the oil without burning.
- Crushed tomatoes (1 can, 28 ounces). Crushed, not diced. Diced tomatoes hold their shape and never become sauce.
- Dried oregano (1 teaspoon), red pepper flakes (¼ teaspoon), salt (¾ teaspoon).
- Fresh basil, a handful, torn. Off the heat, at the end. Basil cooked for twenty minutes tastes like nothing.

How To Make Vegan Sweet Potato Meatballs
Roast, gel, mix, chill, roll, bake. Nothing here is hard, but the chill is not optional.
Step 1: Roast the Sweet Potato
Heat the oven to 425°F.
Toss the sweet potato cubes with 1 tablespoon of olive oil and spread them on a sheet pan.
Roast 25 to 30 minutes, until soft and browned at the edges.
Mash roughly with a fork and let it cool for 10 minutes.
Warm mash will cook the flax gel and you'll lose some of its binding power.
Step 2: Make the Flax Egg
Whisk the ground flaxseed with the water in a small bowl.
Leave it alone for 10 minutes.
It should thicken to something gluey and slightly stringy that clings to a spoon.
If it's still watery, your flax may be old. Give it another five minutes.
Step 3: Mix and Chill
Cook the onion in the remaining 1 tablespoon of oil over medium heat for 5 minutes, add the garlic for the last 30 seconds, then let it cool slightly.
Combine the mashed sweet potato, lentils, flax gel, oats, breadcrumbs, cooked onion and garlic, nutritional yeast, fennel, basil, oregano, smoked paprika, salt and pepper in a large bowl.
Mix thoroughly. Unlike real meatballs, you cannot overwork this one.
Mash some of the lentils against the side of the bowl as you go, leaving maybe half of them whole for texture.
Cover and refrigerate 20 minutes.
This is the step people skip and then write angry comments about. The oats need that time.
Step 4: Roll and Bake
Drop the oven to 400°F and line a sheet pan.
Roll 18 balls, about 1 ½ inches each, packing each one firmly between your palms.
Firmly. A loosely rolled ball has air pockets and air pockets are where they break.
If the mix still feels tacky, work in another tablespoon of breadcrumbs, not more oats.
Bake 15 minutes, turn each ball with tongs, and bake another 10 minutes.
That turn is what gives you browning on more than one face.
Step 5: Make the Marinara While They Bake
Warm the oil in a saucepan over medium-low heat and cook the sliced garlic for 2 minutes, until it just turns pale gold.
Do not let it brown. Burnt garlic will haunt the entire sauce.
Add the crushed tomatoes, oregano, pepper flakes and salt.
Simmer uncovered 20 minutes, stirring now and then, until it darkens and thickens.
Stir in the torn basil off the heat.
Step 6: Finish and Serve
Spoon the hot marinara over the baked meatballs, or ladle sauce into bowls and set the meatballs on top.
Do NOT simmer them in the sauce. A vegan meatball has no meat protein network holding it together, only starch and flax gel, and both of those soften in hot liquid. Ten minutes in a simmering pot and you'll have a very nice lentil ragu, which is not what you set out to make.
Ben's Tips for Meatballs That Hold Together
- Chill the mix. 20 minutes, minimum. If you're in a hurry, ten minutes in the freezer does the same job.
- Use a scoop. A 1 ½ tablespoon cookie scoop gives you evenly sized balls that finish at the same time. Uneven balls means some are dry and some are raw.
- Drain the lentils hard. Tip them into a sieve and leave them there for five minutes. Canned lentils carry more liquid than you'd guess.
- Breadcrumbs, not oats, to fix a wet mix. Oats need time to absorb and you don't have any. Breadcrumbs work instantly.
- Take the turn seriously. Turning them halfway through is the only browning you get without frying.
- Gluten free? Certified gluten free oats and gluten free breadcrumbs work with no other changes.
- Pan frying. You can, in a well-oiled skillet over medium heat, but turn them gently with two spoons. Baking is genuinely more reliable here and I'd start there.

Serving Suggestions
- Over spaghetti. The obvious one, and it's obvious for a reason. Sauce the pasta first, then set the meatballs on top so they don't sit and soften.
- In a sub roll. Split roll, marinara, meatballs, and vegan mozzarella under the broiler for 3 minutes if you want it. A crowd-pleaser at our house.
- As an appetizer. On picks, with a bowl of warm marinara for dipping. This is how I serve them at parties and they always go first.
- Over creamy polenta. Soft, savory, and it turns this into a proper sit-down dinner.
- With roasted vegetables. Skip the starch entirely and serve them with broccolini and a lemon wedge.

Storage and Freezing
- In the fridge. Meatballs and sauce in separate containers for up to 4 days. Stored together, the meatballs drink the sauce and soften.
- Freezing baked meatballs. Cool completely, freeze in a single layer on a tray, then bag. Up to 3 months.
- Freezing the sauce. Same window, and it freezes beautifully in jars with an inch of headspace.
- Reheating. 350°F oven for 12 to 15 minutes from the fridge, or 20 minutes from frozen. Use the oven, not the microwave. Oven heat firms the surface back up while a microwave just steams them soft.
- Make ahead. The raw mix keeps in the fridge for 2 days. Roll and bake straight from cold whenever you want them.

Recipe
Vegan Sweet Potato Meatballs With Marinara
Ingredients
For the Meatballs
- 1 pound sweet potatoes about 1 large, peeled and cut into 1 inch cubes
- 2 tablespoons olive oil divided
- 1 ½ cups cooked green or brown lentils drained very well
- 2 tablespoons ground flaxseed ground, not whole
- 5 tablespoons water
- ½ cup rolled oats old-fashioned
- ½ cup dry breadcrumbs plus more if needed
- ½ cup yellow onion finely chopped
- 3 cloves garlic minced
- 3 tablespoons nutritional yeast
- ½ teaspoon fennel seed lightly crushed
- 1 teaspoon dried basil
- 1 teaspoon dried oregano
- ½ teaspoon smoked paprika
- 1 ¼ teaspoons salt
- ½ teaspoon black pepper
For the Marinara
- 2 tablespoons olive oil
- 4 cloves garlic thinly sliced
- 28 ounces canned crushed tomatoes
- 1 teaspoon dried oregano
- ¼ teaspoon red pepper flakes
- ¾ teaspoon salt
- 1 handful fresh basil leaves torn, added off the heat
Instructions
Make the Meatball Mix
- Heat the oven to 425F. Toss the sweet potato cubes with 1 tablespoon of the olive oil and roast on a sheet pan for 25 to 30 minutes, until soft and browned at the edges. Mash roughly and cool for 10 minutes. Roast, never boil, or the mix will be waterlogged.
- Whisk the ground flaxseed with the water and let it stand 10 minutes, until thick and gluey.
- Cook the onion in the remaining tablespoon of oil over medium heat for 5 minutes, adding the garlic for the last 30 seconds. Let it cool slightly.
- Combine the mashed sweet potato, lentils, flax gel, oats, breadcrumbs, onion and garlic, nutritional yeast, fennel seed, basil, oregano, smoked paprika, salt and pepper in a large bowl. Mix thoroughly, mashing about half the lentils against the side of the bowl. Cover and refrigerate 20 minutes.
Bake and Sauce
- Drop the oven to 400F and line a sheet pan. Roll 18 balls of about 1 ½ inches, packing each one firmly. If the mix feels tacky, work in another tablespoon of breadcrumbs.
- Bake 15 minutes, turn each ball with tongs, and bake another 10 minutes, until browned on more than one face and firm to the touch.
- Meanwhile, warm the olive oil in a saucepan over medium-low heat and cook the sliced garlic 2 minutes, just until pale gold. Do not let it brown.
- Add the crushed tomatoes, oregano, red pepper flakes and salt. Simmer uncovered 20 minutes, until darkened and thickened, then stir in the torn basil off the heat.
- Spoon the hot marinara over the baked meatballs and serve. Do not simmer the meatballs in the sauce, they will soften and break down.
Notes
- Three binders, three jobs: flax gel glues, oats absorb the moisture, breadcrumbs dry the surface so the balls brown.
- Roast, never boil: boiling drives water into the sweet potato and a waterlogged base is why these fall apart.
- Chill the mix: 20 minutes in the fridge or 10 in the freezer, so the oats finish absorbing.
- Never simmer in sauce: sauce goes over the baked meatballs at the end.
- Gluten free: use certified gluten free oats and breadcrumbs, no other changes.
- Storage: meatballs and sauce in separate containers for 4 days, or freeze baked meatballs up to 3 months and reheat at 350F.





