This post may contain affiliate links, view our disclaimer for details.
These vegan meatballs are firm, hearty, and designed to hold their shape in sauce, making them a reliable option for everything from spaghetti to subs. They’re made with TVP for a classic, meaty texture and are easy to prep ahead, bake, and freeze for later.
If you love making recipes with TVP, be sure to check out my homemade vegan ground beef or this vegan chorizo recipe.

Why You’ll Love These Vegan Meatballs
I’ve always liked the Gardein vegan meatballs. But buying them regularly adds up, and I wanted a version I could make at home that had the same meaty texture. This homemade version has even more protein, and is made with ingredients I already keep in my pantry.
Emily’s Recipe Notes:
- Flavor: Savory and versatile- not overly Italian making them great for a variety of recipes.
- Texture: Meaty and firm.
- Difficulty: Easy.
- Time: Under an hour- most of the time is shaping the meatballs.
Why This Recipe Works
I developed this recipe by reverse engineering the ingredient list and macros of Gardein vegan meatballs, then testing different ratios at home to dial in the texture.
This homemade version ends up with even more protein per serving, using a simple combination of TVP and seitan. See below for more details on what they’re made of!
Ingredients

Ingredient Highlights & Some Swaps
Vital Wheat Gluten
Vital wheat gluten is what gives these vegan meatballs their structure and chew. It helps the mixture bind together and creates that firm, meaty texture that holds up well in sauce.
Without it, the meatballs would be much softer and more crumbly. If you’re familiar with seitan, this is the ingredient that makes that texture possible.
Texturized Vegetable Protein (TVP)
TVP makes up the bulk of these meatballs and is responsible for their ground-meat-like texture. I like to pulse the dry TVP in a food processor for a few seconds before hydrating it. This creates a finer texture and makes shaping the meatballs easier and more uniform.
I used Anthony’s TVP, which I order online, but any plain, unseasoned TVP will work here.
Spices
These meatballs are savory and flavorful but intentionally versatile. The seasoning blend is simple and classic, with garlic powder, onion powder, fennel seeds, chili flakes, salt, and black pepper. This keeps them neutral enough to work with marinara, subs, or other sauces without overpowering the dish.
Tomato Paste
A small amount of tomato paste adds depth and savory flavor without making the meatballs taste overly tomato-forward. It helps round everything out and reinforces that classic meatball profile.
Olive Oil
Olive oil adds fat, which improves both flavor and texture. It helps keep the meatballs from tasting dry and gives them a more satisfying mouthfeel, especially after baking and reheating.
Avocado oil or any neutral oil will also work here.
Oat Flour
Oat flour acts as a binder and helps soften the texture without making the meatballs bready. It also helps absorb moisture and keeps the mixture easy to work with when shaping.
How to Make Vegan Meatballs
Exact ingredient quantities are in the recipe card below!

Whisk the spices in a large bowl. Add the water, soy sauce, tomato paste and veggie bouillon paste. Then, mix to combine.

Add the dry TVP to the wet ingredients. Let sit for 5 minutes to hydrate.

Stir the vital wheat gluten and oat flour into the hydrated TVP. Use your hands to gently knead the mixture into a dough.

Divide the vegan meatball mixture into 16 equally-sized balls (or 12 larger portions).

Use your hands to gently knead each ball for 10-15 seconds, then roll into a ball. Place on an oiled foil-lined baking pan.

Bake the vegan meatballs for 20-22 minutes, flipping halfway.
Finishing the Meatballs
After baking, I like to quickly pan-fry the vegan meatballs for the best texture. Heating them in a skillet with a little olive oil over medium-low heat for 2–3 minutes per side helps develop a lightly crisp exterior while keeping the inside tender.
Once they’re browned, you can add your favorite sauce, like marinara, and finish with fresh herbs if you’d like. I don’t recommend skipping the pan frying- it really helps improve the overall texture and helps finish cooking the meatballs.

Storing the Vegan Meatballs
After baking, let the vegan meatballs cool completely, then store or freeze as needed. They can be frozen for up to 2–3 months, which makes this recipe great for meal prep. I often make a double batch and keep them in the freezer for easy weeknight dinners.
To reheat from frozen, pan-fry the meatballs in a little oil over medium-low heat for 4–5 minutes per side, covering the pan to help them thaw and heat through evenly.
If storing in the fridge, keep the baked meatballs in an airtight container for up to 5 days.

More Vegan ‘Meat’ Recipes

Best Vegan Meatballs
Rate this RecipeIngredients
Seasonings:
- ¾ tsp table salt, 3.5g
- 1 tsp onion powder, 3g
- 1 tsp garlic powder, 3g
- ½ tbsp nutritional yeast, 2.5g
- ⅛ tsp ground black pepper, .1g
- ¼ tsp fennel seeds, .5g – roughly ground
- 1 tsp dried parsley, .5g
- ⅛ tsp crushed red pepper flakes, .25g
Everything Else:
- 1 cup water, 220g
- ½ tbsp low sodium soy sauce, 7g – or tamari
- ½ tbsp tomato paste, 8g
- 1 tsp Better Than Bouillon Vegetable Paste, 6g
- 3 ½ tbsp extra virgin olive oil, 35g
- 75 grams texturized vegetable protein, dry – about 1 ¼ cup
- 100 grams vital wheat gluten, about ¾ cup – spooned and leveled
- 2 tbsp oat flour, 20g
Instructions
- Prepare the TVP: Add the dry TVP to a food processor and pulse briefly until it has a finer texture, but not a powder. This helps the meatballs hold together and makes shaping easier.
- Mix the seasonings: In a large bowl, whisk together all of the seasonings.¾ tsp table salt, 1 tsp onion powder, 1 tsp garlic powder, ½ tbsp nutritional yeast, ⅛ tsp ground black pepper, ¼ tsp fennel seeds, 1 tsp dried parsley, ⅛ tsp crushed red pepper flakes
- Whisk Liquids: Add the water, olive oil, soy sauce, tomato paste, and bouillon. Then, whisk until well combined.1 cup water, ½ tbsp low sodium soy sauce, ½ tbsp tomato paste, 1 tsp Better Than Bouillon Vegetable Paste, 3 ½ tbsp extra virgin olive oil
- Hydrate the TVP: Add the pulsed TVP to the bowl and stir to combine. Let it sit for 5 minutes so the TVP can fully hydrate.75 grams texturized vegetable protein
- Add Dry Ingredients: Add the vital wheat gluten and oat flour. Mix with your hands and knead briefly, about 1–2 minutes, until the mixture is uniform and slightly elastic.100 grams vital wheat gluten, 2 tbsp oat flour
- Shape the meatballs: Scoop and roll the mixture into 16 meatballs (about 30 g each), or 12 larger meatballs, depending on preference. Use your hands to gently knead each portion for 10–15 seconds, then roll into a smooth ball.
- Bake: Preheat the oven to 400°F (205°C). Arrange the meatballs on a lightly oiled, foil-lined baking sheet. Bake for 20 minutes, flipping halfway through.
- Finish in the pan: Heat a skillet with a little oil over medium-low heat. Pan-fry the baked meatballs for 2–3 minutes per side until lightly browned. Add sauce as desired.
- Serve immediately, or let the meatballs cool and freeze. To reheat from frozen, pan-fry in a covered skillet until heated through.
Recipe notes
- Seasoning: These vegan meatballs are intentionally seasoned to be savory and versatile, so they work well with marinara, subs, or other sauces. If you prefer a stronger Italian-style flavor, you can add dried oregano, basil, or Italian seasoning to the mixture.
- Texture tip: Pulsing the TVP before hydrating creates a finer texture and makes the meatballs easier to shape and less likely to crumble.
- Freezing: The meatballs can be frozen directly after baking. Reheat from frozen in a covered skillet to warm them through evenly without drying them out.

Did You Make This?
Leave a star rating and a comment below to let others know how it turned out for you!










Did You Make These Vegan Meatballs?
I’d love to know! Leave a star rating and comment below!