Easy Vegan Meatballs are delicious, hearty, packed with protein, can be made gluten-free, and are easy to make! The base is made with TVP (textured vegetable protein) which is a pantry-friendly ingredient made from soybeans. These flavorful, meaty, tender meatballs are perfect for spaghetti, subs, or any other dish that calls for traditional meatballs.

After the rave reviews for my breakfast sausages and taco meat (both made using TVP) I knew I had to create more delicious recipes using TVP! TVP (textured vegetable protein) is an inexpensive vegan protein. It's very mild in flavor, similar to tofu, so it can be seasoned any way you like. It's also gluten-free, easy to work with, and the perfect alternative for ground beef. So I knew that it would be the perfect texture for making amazing vegan meatballs! Boy was I right. Seasoned with onion, garlic, lots of basil, fennel, and black pepper, these meatballs are super tasty all on their own, or are perfect for adding to your favorite Italian dish.
Common questions:
How do you keep vegan meatballs from falling apart?
All-purpose flour binds the vegan meatballs and stops them from falling apart.
Can these meatballs be made gluten-free?
Yes! If you are gluten-free make sure you use a gluten-free substitute for soy sauce such as tamari. Also, sub the all-purpose flour for oat flour or a gluten-free all-purpose flour blend. The meatballs will be a little more tender, but will still taste great!
What are vegan meatballs made of?
This recipe is made with TVP, flour, onions, garlic, vegan beefless broth (or another kind of vegetable broth), and for flavor I add soy sauce (for salt and umami), nutritional yeast, basil, fennel, and black pepper.
WHAT IS TEXTURED VEGETABLE PROTEIN (TVP)?
TVP is the short form for Textured Vegetable Protein, which contains just one ingredient: soy flour. TVP is most commonly found in granules as I use in this recipe, but you can also find it in large pieces such as chunks, slices, and strips. It's very affordable and shelf-stable so it's a great food to keep in your pantry at all times. You may be able to find it in your grocery store in the health food section. Or you can find it at health food stores, international grocery stores, or you can order it online on amazon.
How much protein is in a vegan meatball?
These meatballs are bursting with protein! 1 meatball has just 59 calories and 5 grams of protein. (A beef meatball typically has 3.5 grams of protein per meatball).
How to make Easy Vegan Meatballs:
Preheat your oven to 400°F (200°C). Lightly grease a large baking sheet.
Heat the oil in a large skillet or pan over medium-high heat. Add the onions and garlic and sauté until the onions turn translucent and begin to brown, about 5 minutes.
Stir in the TVP, broth, and soy sauce. Cover and cook at a gentle simmer until the TVP has softened and absorbed the broth, about 10 minutes.
Remove from the heat and mix in the spices, the nutritional yeast, basil, fennel, and pepper. Now stir in the flour and mix well to make a sticky dough mixture.
Once the dough is cool enough to handle, wet your hands (to prevent sticking), then take about 2 tablespoons of dough and gently roll it into a meatball and place it on the prepared baking sheet. Repeat to make about 14 meatballs. Space the meatballs out on the baking sheet so they aren't touching and lightly spray or brush the tops with a bit of oil. Bake for 30 - 35 minutes, stopping to turn the meatballs a few times during baking until the meatballs are golden and firm.
Enjoy the meatballs hot on pasta with marinara sauce, as an appetizer with dip, in a submarine sandwich, or any way else you like to enjoy them. To store, allow the meatballs to cool then store in an air-tight container in the refrigerator for 3 - 5 days or you can store them in the freezer.
These easy vegan meatballs are:
- easy to make and super tasty!
- high in protein
- can be made ahead of time and reheated
More vegan Italian recipes to try:
Vegan Zuppa Toscana
The Best Ever Vegan Lasagna!!!
Vegan Alfredo Pasta Bake
Easy Vegan Penne Alla Vodka
Vegan Creamy Pancetta & Pea Pasta
If you try this recipe let us know by leaving a comment, rating it, and don't forget to 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.













petwisp says
I made these meatballs with homemade oyster mushroom broth. This recipe makes wonderful meatballs and I had no trouble with them falling apart. I followed the recipe but accidentally added 2 tablespoons basil and will make them again. The recipe is easy to follow and make.
Sam Turnbull @ It Doesn't Taste Like Chicken says
So glad you enjoyed them, petwisp! That sounds delicious 🙂
Stella says
Question: can this recipe be made into a meatloaf? Or large meatballs that can be sliced for a sandwich?
Sam Turnbull @ It Doesn't Taste Like Chicken says
Hi Stella! Yes, you could shape the mixture into a small meatloaf or larger meatballs. Just keep an eye on the baking time as a larger shape may need a bit longer to cook through 😊 You could also try my lentil meatloaf recipe. Enjoy!
Stella L Carlstrom says
Thank you!
Dru says
Hey there! I followed the instructions exactly. The meatballs are amazing on the exterior, but mushy inside. I tried to avoid overmixing them. Popping them back in the oven low and slow to see if dehydrating them is going to help. Advice?
Sam Turnbull @ It Doesn't Taste Like Chicken says
Hi Dru! If they’re mushy inside it usually means they need a bit longer to bake or the mixture had a little extra moisture. Putting them back in the oven should help firm them up. Next time you could also try baking them a few minutes longer before serving, or making the meatballs a bit smaller so they cook through better. Hope that helps! 😊
joe grech says
I just read your response that flour is used to hold patties drom falling apart. Why cannot same be used for the Italian sausages???
I cannot obtain the vwp.
Thanks.
Joe
Sam Turnbull @ It Doesn't Taste Like Chicken says
Hi Joe! Vital wheat gluten is what gives seitan-style recipes their chewy, meaty texture, so it can’t be replaced with regular flour. For the meatballs, the flour works as a binder, but it won’t create that same texture as VWG.
Christine says
I made these for supper tonight, and boy were they good. I made 28 smaller tvp balls, and used oregano instead of basil. They turned out great, they were crispy and brown on the outside and soft and delicious inside. I ate some of them with my spaghetti and a couple I just dipped into the tomato sauce and they were excellent. I will definitely make these again and probably double or triple to freeze some. Great recipe, thank you for sharing 🙂
Sam Turnbull @ It Doesn't Taste Like Chicken says
Wonderful! So thrilled you enjoyed them so much Christine, thank you for the review 🙂
nadya says
These are excellent. The fennel and basil combination makes them smell divine while baking and they are delicious.
Sam Turnbull @ It Doesn't Taste Like Chicken says
Yay! So happy you enjoyed them nadya 🙂
Melissa Hawthorne says
I think I did something wrong...mine came out VERY dense & it barely made 10 small meatballs. This is my first attempt at using TVP, so I am guessing I did something wrong, but I triple checked the measurements, so I can't figure out what went wrong. Any suggestions would be greatly appreciated.
Sam Turnbull @ It Doesn't Taste Like Chicken says
Hi Melissa, it sounds like the TVP may not have fully absorbed the broth or the mixture may have been packed too tightly — make sure it’s soft and hydrated before adding flour, and gently scoop/roll (don’t compress too much) 😊
Tashana says
The flavor is great! However the exterior was a bit hard and crunchy. Did I coat them in too much oil? Otherwise 10 out of 10.
Jess @ It Doesn't Taste Like Chicken says
We're glad you liked them! Too much oil or perhaps a little too long in the oven, it's tough to say exactly without being in the kitchen with you. 🙂
Robert says
I have made this excellent recipe several times. Best mouth-fill meatballs ever! I have made two tweaks that I will share. First, I add 1 tablespoon of Marmite just as the onion becomes translucent. This creates a meatier taste. Second, I add a couple of teaspoons of beat powder to the vegan broth for color.
I have also tried steaming these for a moister ball. I steam for 25 minutes. This works well, too. With this approach add two tablespoons of oil to when at the sauté stage because there will be no brush-on oil.
Sam Turnbull @ It Doesn't Taste Like Chicken says
Hi Robert, yay that makes me so happy! My husband would approve of the marmite addition, haha. Love your tweaks, I will have to try them, so happy you enjoy the recipe! 🙂
Lorna Cassano says
Can these be simmered in sauce, or will they fall apart?
Sam Turnbull @ It Doesn't Taste Like Chicken says
Hi Lorna, I recommend baking them then adding them to your sauce in the last 5 to 10 minutes so that they still hold their shape and don't get soggy. I hope that helps!
Rhea says
Great recipe! I had leftover veg curry that I wanted to stretch for another meal, so made the meatballs to mix in. I just omitted the nutritional yeast and substituted Garam Masala for the Basil. The family loved it! Will definitely make them again. Thanks so much for sharing the recipe.
Sam Turnbull @ It Doesn't Taste Like Chicken says
Oooh sounds so yum! I am so happy you and your family enjoyed it Rhea 🙂
Jen says
This turned out so yummy! Thank you for all your recipes .. they are always excellent EVERY TIME !
Sam Turnbull @ It Doesn't Taste Like Chicken says
Aww that makes me so happy! Thank you so much, Jen! Thrilled you enjoy it so much!
Melissa says
Made these to stick in the freezer for post-partum. They turned out really good! Going to go ahead and make another batch to also freeze. I did add a dash of worcestershire, parsley, and a flax egg, and used bread crumbs instead of flour. They turned out a bit salty so I will adjust the soy sauce next time, but could also be because I added worcestershire. Overall really yummy and great way to use up TVP!
Sam Turnbull @ It Doesn't Taste Like Chicken says
So happy you enjoyed them Melissa!
Karen McGregor-Lucchesi says
My husband and I Loved loved LOVED this recipe, Sam!!! So easy and delicious!! I was thinking about making a double batch and freezing some. I have never frozen TVP Do you think it would work? Maybe pre baked?
Sam Turnbull @ It Doesn't Taste Like Chicken says
Hi Karen, I'm so happy to hear you and your husband loved the recipe! 😊 Yes, you can absolutely freeze the TVP meatballs. I recommend baking them first, letting them cool completely, and then freezing them in a single layer on a baking sheet before transferring them to an airtight container or freezer bag. That way, they won’t stick together, and you can take out just as many as you need! When you're ready to enjoy them, reheat straight from frozen by baking at 375°F (190°C) for about 15-20 minutes or until heated through. Hope that helps, and happy cooking! 💛