These easy vegan meatballs are hearty, flavorful, and packed with protein. Made with pantry-friendly TVP (textured vegetable protein), they bake up tender and meaty with lightly crisp edges. Perfect for spaghetti, meatball subs, bowls, or appetizers, and they freeze beautifully for meal prep.
I know “textured vegetable protein” doesn’t exactly sound appetizing. But hear me out: this inexpensive pantry ingredient makes the BEST vegan meatballs. Unlike a lot of vegan meatball recipes made with beans or lentils (which can sometimes turn out mushy) or pricy store-bought vegan ground (which isn’t always very healthy), TVP creates a chewy, hearty, meaty texture that gets crispy on the outside while staying tender in the middle. Plus, it’s shelf-stable, high in protein, and made from just one ingredient: soy flour. I always keep a bag in my pantry for recipes like this and my reader-favorite Vegan Breakfast Sausage Patties. If you are new to TVP, don’t be afraid to try it! It is so convenient and delicious.


Why These Vegan Meatballs Are the Best EVER
- Amazing meaty texture: TVP gives these meatballs a hearty, chewy texture without needing expensive store-bought vegan meat.
- Budget-friendly: These homemade vegan meatballs are cheaper than packaged vegan meatballs or plant-based ground.
- Protein-packed: TVP is naturally high in protein, making these meatballs hearty and satisfying.
- Made with pantry staples: No special vegan meats required. Just simple ingredients you can keep on hand.
- Perfect for meal prep: They freeze beautifully and reheat like a dream too.


Ingredients for Vegan Meatballs
- Olive oil: Or use broth or water for an oil-free version.
- Yellow onion and garlic: Chop the onion finely and mince or press the garlic so it blends seamlessly into the meatball mixture.
- TVP granules: You can find these in the health food section of your grocery store, in health food stores, or you can buy them online.
- Broth: Vegan beefless broth gives the richest flavor, but mushroom or vegetable broth also works well.
- Soy sauce: Use tamari for a gluten-free version.
- Nutritional yeast: For savory depth and a little cheesy flavor.
- Seasonings: Dried basil, whole fennel seeds, and black pepper.
- All-purpose flour: Helps bind everything together. Use an all-purpose gluten-free flour blend if needed.
How to Make Vegan Meatballs


- Sauté the Aromatics: Heat olive oil in a large skillet over medium heat. Add the onion and garlic and cook until softened and lightly golden.


- Hydrate the TVP: Stir in the TVP, broth, and soy sauce. Bring to a simmer, then cover and cook until the liquid is absorbed and the TVP softens.


- Season and Bind: Remove from heat and stir in the nutritional yeast, basil, fennel seeds, and black pepper. Add the flour and mix until a dough forms that holds together when pressed. If the mixture feels too wet, add another tablespoon of flour. If it feels dry, add a splash of broth or water.


- Shape the Meatballs: Let the mixture cool slightly, then roll into meatballs about 2 tablespoons each. A cookie scoop works well for evenly sized meatballs.


- Bake: Place the meatballs on a parchment-lined baking sheet and lightly brush or spray with oil. Bake at 400°F for 30 to 35 minutes, turning them a few times during baking, until browned and firm on the outside.


- Use: Add tp marinara sauce and serve over pasta, use them in a vegan meatball subs, enjoy them as an appetizer, or munch on them straight from the pan.
Tips and Variations
- Don’t skip the resting time: Letting the mixture cool slightly before rolling makes it much easier to shape and helps the meatballs hold together better.
- The mixture should feel like cookie dough: If it’s too wet, add another tablespoon of flour. If it’s too dry or crumbly, add a splash of broth or water.
- Wet your hands: The mixture can be a little sticky while shaping, so lightly damp hands make rolling much easier.
- Bake before simmering in sauce: For the best texture, bake the meatballs first so they hold together nicely, then simmer them in marinara.
- Air fryer option: Air fry at 370°F for 18 to 24 minutes, shaking a few times during cooking, until browned and firm.


Ways to Serve Vegan Meatballs
These vegan meatballs are so versatile! Here are a few of my favorite ways to serve them:
Storage and Freezing
- Fridge: Store leftover vegan meatballs in an airtight container in the fridge for up to 4 days.
- Freezer: Let the meatballs cool completely, then freeze them in a single layer before transferring to a freezer-safe bag or container. Freeze for up to 3 months.
- Reheating: Bake from frozen at 375°F for 15 to 20 minutes until heated through, or simmer directly in sauce during the last few minutes of cooking.




(click stars to vote)
Vegan Meatballs (Easy, Protein-Packed & Perfectly Meaty)
These easy vegan meatballs are hearty, flavorful, and packed with protein. Made with pantry-friendly TVP (textured vegetable protein), they bake up tender and meaty with lightly crisp edges. Perfect for spaghetti, meatball subs, bowls, or appetizers, and they freeze beautifully for meal prep.
Servings: (about 12 meatballs)
PRINT
PIN
Video
Instructions
-
Prep the oven: Preheat your oven to 400°F (200°C). Line a large baking sheet with parchment paper or lightly grease it.
-
Sauté the aromatics: Heat the olive oil in a large skillet over medium heat. Add the onion and garlic and cook for about 4-5 minutes until softened and just beginning to brown.


-
Hydrate the TVP: Stir in the TVP, broth, and soy sauce. Bring to a gentle simmer, then reduce heat to low, cover, and cook for 5-10 minutes, stirring often, until the TVP is softened and all of the liquid is absorbed.


-
Season and bind: Remove from heat. Stir in the nutritional yeast, basil, fennel seeds, and black pepper. Add the flour and mix very well until a dough forms that holds together when pressed. If the mixture feels too wet, add a little more flour 1 tablespoon at a time. If too dry, add a broth or water 1 tablespoon at a time.


-
Shape the meatballs: Let the mixture cool slightly, then scoop about 2 tablespoons (30 g) and gently roll into meatballs. A cookie scoop works great for even sizing. If the mixture sticks, lightly wet your hands before rolling. Place on the prepared baking sheet and repeat with the remaining mixture to make about 12 meatballs.


-
Bake: Lightly brush or spray the tops with oil. Bake for 30-35 minutes, turning the meatballs 2-3 times during baking, until browned, firm on the outside, and cooked through.


-
Serve: Serve hot with pasta and marinara, in meatball subs, in bowls, or as an appetizer with your favorite dipping sauce.
Notes
Freezing: Let the cooked meatballs cool completely, then freeze in a single layer on a baking sheet. Once frozen, transfer to a freezer-safe container or bag and freeze for up to 3 months.
Reheating from frozen: Bake from frozen at 375°F (190°C) for 15 to 20 minutes, or until heated through. You can also warm them directly in sauce during the last 10 minutes.
Simmering in sauce: For best texture, bake the meatballs first so they hold together well, then add them to sauce in the last 5 to 10 minutes.
Gluten-free option: Use tamari instead of soy sauce and swap in a good all-purpose gluten-free flour blend. The texture may be slightly softer depending on the blend used.
Oil-free option: Sauté the onion and garlic in a splash of water or broth instead of oil. Bake the meatballs on parchment or a silicone baking mat.
Air fryer method: Preheat your air fryer to 370°F (188°C). Place the meatballs in a single layer and lightly spray with oil. Air fry for 18 to 24 minutes, shaking 2 – 3 times, until browned and firm.
Nutrition
Serving: 1 serving (about 3 meatballs) | Calories: 205kcal | Carbohydrates: 26g | Protein: 16g | Fat: 4g | Saturated Fat: 1g | Polyunsaturated Fat: 0.5g | Monounsaturated Fat: 3g | Sodium: 743mg | Potassium: 201mg | Fiber: 6g | Sugar: 5g | Vitamin A: 135IU | Vitamin C: 3mg | Calcium: 120mg | Iron: 5mg
⭐ Did You Make This Recipe?
I’d love if you left a rating and comment, it helps others find the recipe and makes my day! 💕
