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:
- With spaghetti and marinara
- Stuffed into meatball subs with melty Vegan Mozzarella
- Served as an appetizer with dipping sauce (try my Vegan Grape Jelly Meatballs)
- Tossed into pasta bake
- Added to grain bowls
- Paired with Garlic Mashed Potatoes and Vegan Mushroom Gravy
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.

If you try this vegan meatballs recipe, let us know by leaving a comment and rating it. I'd love to see what you made. Share your creation in the It Doesn't Taste Like Chicken Community (this is where we're all hanging out now!) or tag @itdoesnttastelikechicken on Instagram.
Bon appetegan!
Sam Turnbull.

(click stars to vote)
Vegan Meatballs (Easy, Protein-Packed & Perfectly Meaty)
Servings: (about 12 meatballs)
PRINT
PIN
Video
COMMENT
Ingredients
- 1 tablespoon olive oil, (plus more for brushing or spraying)
- 1 yellow onion, chopped
- 4 cloves garlic, minced or pressed
- 1 cup dry TVP granules, (also called textured vegetable protein)
- 1 cup vegan beefless broth, mushroom broth, or vegetable broth
- 2 tablespoons soy sauce
- 2 tablespoons nutritional yeast
- 1 tablespoon dried basil
- 1 teaspoon whole fennel seeds
- ½ teaspoon black pepper
- ½ cup all-purpose flour
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.







Trina K. says
I used the vegan meatballs as a part of our spaghetti dinner. I love the flavor! I did have leftover meatballs. I crumbled some of the leftovers and used it as a topping on our homemade vegan pizza. It was a great addition on both dinners!
Sam Turnbull @ It Doesn't Taste Like Chicken says
Yay! So happy you loved them, Trina! And crumbling the leftover meatballs over pizza is such a great idea! Two delicious dinners out of one batch!
Trish B. says
Sometimes I forget what a great ingredient TVP really is. Sam's Easy Vegan Meatballs reminded me of how versatile it is! These vegan meatballs were so easy to make, and flavourful with a truly meaty texture that my non-vegan husband and I really enjoyed. We paired them with salsa for a healthy, vegan meal.
Sam Turnbull @ It Doesn't Taste Like Chicken says
Yay! So happy you both loved them, Trish! TVP really is such a fun and versatile ingredient, and I’m so glad these meatballs reminded you how great it can be!
Marjori Cantwell says
I made these last night while my husband was working. Then tonight before I headed out to play pickleball I set them out on the counter top with pasta, red pepper, onion, pasta sauce and green beans. My husband assembled a lovely pasta and meatball dinner with a side of fresh steamed green beans which was waiting for me after pickleball. He definitely wants me to make these again and was very impressed because he knows I am NOT a natural in the kitchen. 🤪
Sam Turnbull @ It Doesn't Taste Like Chicken says
Hahaha, I LOVE this, Marjori! I’d say you’re doing pretty darn well in the kitchen if your husband is already requesting them again!
Dana says
These meatballs are very easy to make and taste delicious. I added them to a casserole, and they held their shape perfectly!
Sam Turnbull @ It Doesn't Taste Like Chicken says
Yay! So happy you loved them, Dana! And I love hearing that they held up so well in your casserole too!
Megan L. says
I made these meatballs for the first time. They were so easy to make and are so flavorful! When my husband tried them, he said “Is this one of Sam’s recipes?” I said it was and he said “She sure knows what she’s doing!”
Sam Turnbull @ It Doesn't Taste Like Chicken says
Hahaha, Megan, this made my day!! Please tell your husband I said thank you! I’m so happy you both loved the meatballs!
Carla says
These are so easy to make and delicious. The texture is so meaty and the flavors are spot on. We used them in meatball subs and my kids suggested I add these to the dinner rotation.
Sam Turnbull @ It Doesn't Taste Like Chicken says
Yay!! So happy you all loved them, Carla! 😍 Getting a request from the kids to add them to the dinner rotation is the BEST!
Moxie says
Delicious, easy, and pretty quick to make. And budget friendly! Made them for Family dinner Monday with your garlic mashed potatoes (also a crazy delicious!) and mushroom gravy. Such a delicious, comforting meal❤️
Sam Turnbull @ It Doesn't Taste Like Chicken says
Ohhh that sounds like the ultimate comfort-food dinner, Moxie! Meatballs, garlic mashed potatoes AND mushroom gravy?! So happy you loved everything!
Suzy says
Excellent!! Very flavorful, and really easy to prepare! I served over linguini tossed with my homemade vegan pesto. Wonderful meal! Husband-approved! Thanks Sam!
Sam Turnbull @ It Doesn't Taste Like Chicken says
Yum, Suzy! Meatballs over linguine with homemade pesto sounds SO good! So happy it was husband-approved too!
Stefanie says
These turned out really well. I used them as appetizers with a tomatoe/vegan cream cheese sauce. Delicious!
Sam Turnbull @ It Doesn't Taste Like Chicken says
Yum, Stefanie! 😍 That tomato and vegan cream cheese sauce sounds delicious with them! So happy they were a hit!
Amber says
This recipe is always on rotation in my house. TVP is such a great, inexpensive ingredient and it’s so underrated; this meatball recipe really showcases what it can do!
Sam Turnbull @ It Doesn't Taste Like Chicken says
YES! I’m with you, Amber—TVP is such an underrated ingredient! So happy these meatballs are on regular rotation at your house! Thank you for the review 🙂
Brenda Bennett says
These vegan meatballs are delicious. My husband who isn't even vegan loved them. These will be on the dinner rotation for sure.
Sam Turnbull @ It Doesn't Taste Like Chicken says
Yay! So happy you both loved them, Brenda! Getting the non-vegan husband approval AND a spot in the dinner rotation is a win!
Kristin says
Very tasty vegan meatballs! Better than other similar recipes I've tried. I'm looking forward to replacing store-bought Gardein vegan meatballs (which taste pretty similar) with these to cut out processed food. Thanks for the delicious and healthy recipe!
Sam Turnbull @ It Doesn't Taste Like Chicken says
So happy you loved them, Kristin! 😊 I love that they may be replacing the store-bought ones for you too. Thanks so much for making them!
Cheryl says
These were delicious with fresh cherry tomato sauce.
Sam Turnbull @ It Doesn't Taste Like Chicken says
That sounds delicious, Cheryl! So happy you enjoyed them!
Beth ELLIOTT says
Even though we are coming up on five years being vegan, this is my first attempt at making vegan meatballs. i think
I have been putting this off for fear of failure. Well, I made a double recipe to freeze some. We scarfed our first vegan meatballs with this recipe and both my husband and I were pleased with the result. For a splash of color, I did add a bit of fresh cut green onions to the meatballs before tightening them into a nice ball. Yummy and easy!
Sam Turnbull @ It Doesn't Taste Like Chicken says
Aww I love this, Beth! 🥹 I’m so happy your very first vegan meatballs were a success!!
Ashley N. says
My husband and I loved these (and he is very picky)! The recipe was easy to follow. The meatballs held their shape well and didn’t stick to the parchment. I did leave out the fennel because I knew my husband wouldn’t eat it otherwise, and I used Italian seasoning instead of dried basil. They made great meatball subs. I will be using this as my go-to meatball recipe from now on!
Sam Turnbull @ It Doesn't Taste Like Chicken says
Hi Ashley, yay! So thrilled you loved them! And great to hear they are still delicious without the fennel 🙂 Thanks for your review!
Sandra V. says
There was a time when I really struggled to stick to a meat-free diet because I found it difficult to find recipes that were easy, tasty, and adaptable to a gluten-free diet. Recipes like this one have made it so much easier! It’s quick to make, absolutely delicious, and so easy to adapt. This has definitely become one of my go-to recipes!
Sam Turnbull @ It Doesn't Taste Like Chicken says
I love hearing this, Sandra! So happy the recipe has made plant-based cooking feel easier and that it’s become one of your go-tos!
Jewel says
I am not a good cook and even fail when using recipes. But, the teriyaki seitan chicken turned out well. Maybe there is hope for me. Were you a good cook even before becoming vegan? You are so creative and good at this. I am very impressed.
Shelley says
I'm eager to try this recipe! We have to avoid fennel -- what do you suggest so the flavor isn't harmed?
Sam Turnbull @ It Doesn't Taste Like Chicken says
Hi Shelley! You can simply leave the fennel out. 😊 It does add a classic Italian sausage-style flavor, but there are lots of other seasonings in the meatballs, so they’ll still be delicious without it. No special substitute is needed. Hope you enjoy them!
Bryanna Connor says
Soooo good. We’ve made this a few times and used them in meatball subs. One of my favorite dinners lately!
Sam Turnbull @ It Doesn't Taste Like Chicken says
Meatball subs!! 😍 That sounds SO good, Bryanna! I’m so happy these have become one of your favorite dinners!
Rochelle says
Really good and crunchy! I omitted the spices to make it toddler friendly and served with homemade BBQ sauce.
Sam Turnbull @ It Doesn't Taste Like Chicken says
So happy you enjoyed them, Rochelle! 😊
Ash says
Hi Sam, I’m trying to make a vegan Greek meatball recipe (keftedes). I saw you also have a seitan meatball recipe, so I was curious which recipe you think yields a better result for this dish as they both look delicious, or which you prefer yourself. Thank you!
Ash says
Ps, the way I’m used to making the keftedes require adding raw grated onion, I imagine it will make them a little extra wet due to the juice, however I wonder if it can be added after simmering the tvp in the broth.
Sam Turnbull @ It Doesn't Taste Like Chicken says
Hi Ash! I would actually recommend starting with these TVP meatballs. 😊 They already include sautéed onion and have a softer, more tender texture that I think is a great fit for keftedes. If you wanted to add a little grated onion as well, I'd squeeze out the excess liquid first before mixing it in. I'd love to hear how they turn out!