White plate filled with spaghetti, vegan meatballs, and marinara sauce on a blue background.

Whenever someone is hesitant to try out eating more meatless meals, one of my favorite things to do is show them just how comforting and hearty plant-based eating can be.

I think a common misconception about a plant-based diet is that it’s just a bunch of salads. So not true! A plant-centered meal can be just as hearty and stick-to-your-ribs-y as a meal with animal products. And this big ole plate of spaghetti and vegan meatballs is a perfect example of that.

I posted my first meatless meatball recipe back in 2011 after getting a recipe emailed to me by one of my coworkers. I was really happy with the taste of the recipe, but now looking back at it, the ingredient list was a little unwieldy. It had 17 ingredients just to make some daggum meatballs!

For years now, I’ve been working on perfecting that vegan meatballs recipe with these main goals in mind:

  1. Reduce the ingredient list as low as possible (it’s down to 10 for the base recipe).
  2. Use only pantry staples (the weirdest ingredient here is walnuts).
  3. Keep it delicious, meaty, and hearty (it totally is).

White plate filled with spaghetti, vegan meatballs, and marinara sauce on a blue background. A white-handled fork rests on the edge of the plate.

After a whole lot of spaghetti and meatball dinners (like, a lot), I think I’ve finally landed on a really great, relatively simple, perfectly meaty, and delicious plant-based meatball recipe. Woohoo!

What are meatless meatballs made out of?

There are a lot of great meatless meatball recipes out there, but not a lot of great meatless meatball recipes that don’t call for specialty ingredients like tempeh or TVP or tofu or wheat germ or seitan. These vegan meatballs are made using only ingredients that are regularly kept in my pantry. They are all 100 recognizable—no soy protein isolate here! Here’s what’s in these meatballs:

  • Chickpeas
  • Onion
  • Garlic
  • Walnuts
  • Oats
  • Brown rice
  • Soy sauce (or tamari if gluten-free)
  • Ketchup
  • Herbs and spices

Skillet filled with vegan meatballs, on a blue background

How do you make vegan meatballs gluten-free?

There’s no flour or breadcrumbs to help these meatballs hold their shape, so you’re already half-way there! Just make sure to grab gluten-free old-fashioned oats and use tamari or coconut aminos instead of soy sauce, and this recipe is ready for all of your gluten-free friends and family! This is the best GF spaghetti we’ve found, by the way. And you can make some vegan Parmesan cheese to go with them, too!

Light blue bowl filled with meatless meatballs, on a darker blue background

How do you cook these meatballs?

When it comes to the cooking method for these beautiful, meaty babies, I’ve done all kinds of testing, and I’ll tell you that my favorite method is to pan-fry them (in avocado oil because it has an über-high smoke point) until brown and crisp.

BUT, if pan-frying isn’t your thing, I’ve also done these 100% in the oven with pretty darn good results. You obviously don’t get the crispy, crunchy outside crust, but you still get a really great meatball.

Hand holding a white-handled fork with a vegan meatball skewered on it.

Help! My meatballs won’t stay together!

I’ve also done a lot of testing on this recipe using eggs, egg substitutes, and even no egg at all, and I’ve found little difference. If you have trouble getting the recipe to hold together, you can add an egg (if you’re not vegan) or a flax egg (mix one tablespoon ground flaxseed meal with three tablespoons warm water and let thicken for five minutes) to the mixture to make it stickier, but I didn’t find it necessary.

Can you freeze these meatballs?

You sure can! I like to freeze them after pan-frying in a single layer in a cookie sheet. Then once frozen solid, I transfer to a zip-top freezer bag and keep them stashed in the freezer for up to six months. When it’s time to cook those bad boys, I just drop them into a pot of sauce straight from frozen and cook until warmed through—about 10 minutes. 

The original version of this vegan meatballs recipe has been around for a while and quite a few folks enjoyed it, so if you’d like access to that, you can print it here. But I highly recommend trying out this new version! You won’t be sorry. Enjoy!

White plate filled with spaghetti, vegan meatballs, and marinara sauce on a blue background.

Vegan Meatballs

Yield: 36 1-inch meatballs
Prep Time: 5 minutes
Cook Time: 20 minutes
Total Time: 25 minutes

At last, meatless meatballs that don’t call for any specialty ingredients! These Easy Vegan Meatballs are relatively simple and perfectly meaty, and you probably already have the ingredients in your kitchen.


  • 1 14-ounce can chickpeas, drained and rinsed
  • 1/2 large onion, roughly chopped (about 1/3 cup)
  • 1/2 cup walnuts (toasted is great, but not necessary)
  • 1/2 cup old fashioned oats (gluten-free, if necessary)
  • 1 clove garlic, peeled
  • 1 cup cooked brown rice (wild rice is great, too)
  • 2 tablespoons ketchup
  • 1 tablespoon soy sauce (use coconut aminos or tamari if gluten-free)
  • 2 teaspoons chili powder
  • 1/2 teaspoon salt, plus more to taste
  • Additional spices, if desired (see notes)
  • Avocado oil (or other high heat oil), for pan-frying


  1. In the basin of a food processor, pulse together the chickpeas, onion, walnuts, oats, and garlic until it forms a coarse meal about the texture of ground beef. Don’t overmix. You should still see a few small chunks.
  2. Transfer the mixture to a large mixing bowl, and add in the rice, ketchup, soy sauce, chili powder, salt, and any additional spices you’re using. Stir until well-mixed.
  3. If you like a meatball with smoother texture, transfer half of the mixture back into the food processor, and pulse until very smooth and pasty—add back to the other half of mixture and stir well to combine.
  4. Heat a couple of tablespoons of oil in a large skillet over medium heat. Form the meatball mixture into 1” balls and fry in skillet until golden brown on all sides—about 10 minutes total. Don’t overcrowd the pan—you’ll probably want to work in 2-3 batches.


  • This is great base recipe, but you can doctor these up with spices however you see fit—add two tablespoons of Italian seasoning plus two tablespoons of nutritional yeast for serving over pasta with tomato sauce. Add Montreal Steak Seasoning for great cocktail meatballs to serve as appetizers. The possibilities are endless!
  • We use avocado oil instead of something like olive oil because the avocado oil has a higher smoke point and won't get smoky and burnt during pan-frying. You can also use grapeseed oil, safflower oil, or another high-heat oil.
  • If your meatballs aren’t holding together, feel free to add either an egg (if you’re not vegan) or a flax egg (mix one tablespoon ground flaxseed meal with three tablespoons warm water and let thicken for five minutes) to the meatball mixture. I didn’t find this necessary for my meatballs to stay together well.
  • For an extra boost of flavor, cook your brown rice in veggie broth or even not-beef broth.
  • If you want to skip pan-frying, you can just put the formed meatballs directly on the baking sheet and bake at 425°F for 15-20 minutes, or until golden brown and firm.
  • Add these meatballs to your saucepan right before serving. The longer they swim around in the sauce, the more tender they become.

Nutrition Information:
Yield: 36 Serving Size: 1 meatball
Amount Per Serving: Calories: 44Total Fat: 2gSaturated Fat: 0gTrans Fat: 0gUnsaturated Fat: 1gCholesterol: 0mgSodium: 113mgCarbohydrates: 6gFiber: 1gSugar: 1gProtein: 2g

At Wholefully, we believe that good nutrition is about much more than just the numbers on the nutrition facts panel. Please use the above information as only a small part of what helps you decide what foods are nourishing for you.

Leave a Reply

Your email address will not be published. Required fields are marked *


  1. I made these today and they are delicious! They even taste pretty good before cooking. I used Lindberg rice, the blend with whole grain brown rice and wild rice and I did add the flax egg for extra nutrition.
    The unmeatballs held together quite well.
    Now if I could just stop eating them before I get them on spaghetti for supper.
    Thanks for sharing this great recipe.

    1. Thanks for sharing your success with us, Rhonda! We’re so glad you love them. They’re fan favorites in our houses, too!

  2. This is an amazing recipe. It will now be my go to recipe for spaghetti & meatballs. Very moist and flavorful!

    1. We’re so glad you like it, Chris! Thanks for taking the time to come back and tell us about it! =)

  3. My husband loves this meatball recipe best of the many we’ve tried. One thing I’ve started doing due to being lazy aka busy with work and family, is to just spread the mix onto a baking pan and bake it as recommended. I then mix it into marinara sauce and make it ‘meat’ sauce instead of meatballs. Saves time and effort and is still as delicious!

      1. We still make this regularly, and the crumbles work great for baked ziti/lasagna, but sometimes I use quinoa or other ancient grain if I don’t have rice on hand or time to cook the rice, and for added protein. Works just fine with the substitute.

  4. These were AMAZING! Kids ate them too with no complaining! My husband suggested to crumble them and put them in a lasagna, so we will try that next time! Thanks for the great recipe, it’s a keeper!

    1. Thanks, Erin! That’s so wonderful to hear! We really appreciate you taking the time to let us know that it was a hit. If you try them crumbled in lasagna (which sounds amazing, btw!), please let us know how it turns out for you!

  5. Eating the meatballs now with brown gravy over mashed potatoes. Delish!!
    I used left over brown rice re-hydrated with some homemade veggie broth and added 1 Tbsp Italian seasoning and 1 tsp smoked paprika and baked them, so it is a no oil recipe.

    Thank you. If you had a rating system I would give this 5 stars!