vegan meatballs on a plate

Vegan Sweet and Sour Meatballs (Japanese-Style) | ヴィーガン肉団子の甘酢あん

This page may contain affiliate links. As an Amazon associate we earn from qualifying purchases. Please read our disclosure for more info.

Flavorful, hearty vegan meatballs packed with plant protein. Coated in a Japanese-style sweet and sour sauce, they are irresistible!

vegan meatballs on a serving plate

These vegan meatballs are my plant-based twist on Japanese sweet and sour meatballs (nikudango 肉団子). Unlike many meatless meatballs, these are NOT mushy! Thanks to the addition of mushrooms and frozen tofu, they have a hearty, chewy texture and are just so delicious! They’re also perfect for meal prep and bento boxes, so make a big batch and enjoy them throughout the week for a fuss-free meatless meal.

vegan meatballs ingredients

Key Ingredients

  • Beans ⟶ Choose a sturdier bean like chickpeas. Or if you cook your own beans from dry, cook them until al dente, being careful not to overcook them or your meatballs will be more mushy.
  • Frozen Tofu ⟶ Soaks up some of the moisture and adds chewy texture to offset the mushiness of the beans.
    • I’ve also used 30 grams of koya-dofu, Japanese freeze-dried tofu. Rehydrate in warm water for about 10 minutes, then rinse in a bowl of cold water. Squeeze out excess water. You can repeat this rinse-and-squeeze process a few times to clean out the tofu, changing the water as needed if it gets too cloudy.
  • Mushrooms ⟶ Adds umami and chewy, meaty texture. Try to choose flavorful mushrooms, like shiitake (my favorite) or cremini.
  • Walnuts ⟶ Feel free to use another nut/seed like almonds or sunflower seeds.
  • Oats ⟶ To soak up some of the moisture and prevent mushy texture.
  • Miso, Nutritional Yeast, & Tomato Paste ⟶ For lots of umami flavor! You can omit one or two if necessary, but be sure to use at least once of these ingredients.
  • Flax/Chia Egg ⟶ To bind the meatballs together.
  • Baking Powder ⟶ Technically optional, but it makes the meatballs just a bit lighter and fluffier.

Sweet and Sour Sauce

These vegan meatballs are very versatile, so you can toss them in another sauce of choice. But sweet and sour sauce is the most common for Japanese meatballs. Some sweet and sour sauces are made with just vinegar, sugar, and soy sauce. But I like to add some ketchup for sugar, acidity, and a little extra flavor.

How to Make Vegan Meatballs

Although there are a lot of steps involved in making vegan meatballs, don’t be intimidated! The process can be a bit time consuming, but the actual methods are easy to follow – and the results are definitely worth it! Plus you can make a big batch for leftovers, so it’s time well spent in my opinion. You will need a food processor (I love my Cuisinart 7 Cup Food Processor*) to finely chop the veggies and mix the meatball filling.

Here’s an abbreviated method for making these sweet and sour meatballs (detailed instructions in the recipe card near the bottom of the post):

  1. Cook veggies to remove excess moisture.
  2. Pulse ingredients in food processor to form the meatball mixture.
  3. Chill mixture in the fridge for at least an hour (can prep a day in advance). This allows the mixture to thicken and hold together better, and also gives the flavors time to meld.
  4. Shape into meatballs about 2 tbsp in size. I was able to fill one large sheet pan with 28 meatballs.
  5. Cook in the oven or air fryer until browned.
  6. Simmer sauce in a pan until thickened.
  7. Coat meatballs with sauce.
vegan sweet and sour meatballs on a plate sprinkled with sesame seeds

Tips for Success

Finely chop veggies but don’t overdo it ⟶ It’s easy to take the veggies from chopped to mushy in a food processor, so take care when pulsing (use the “pulse” function not blend) so you leave some texture. Otherwise your meatballs will turn out mushy.

Use sturdy beans or al dente beans ⟶ Canned beans are usually fairly firm – chickpeas are a safe bet – but if you’re cooking your own beans from dry then be careful not to overcook them. You want them al dente so they still have a little bite, otherwise the meatballs can turn out mushy.

close up of a vegan meatball with a bite taken out of it

Vegan Meatball FAQ

Can I prep vegan meatballs in advance?
Yes! You can prep the mixture a day in advance and shape and cook them the day of. Or you can store cooked (un-sauced) meatballs in the fridge for up to 5 days – store the sauce separately.

Can I freeze vegan meatballs?
You can freeze the cooked meatballs and sauce separately for to 2-3 months. To freeze the meatballs, place them spaced apart on a baking sheet and place in the freezer for a couple hours until frozen. Then transfer the frozen meatballs to freezer bags.

Can I make them gluten-free?
Yes, these meatballs can be made gluten-free by using certified gluten-free oats and swapping soy sauce for tamari.

Can I make them nut-free?
Yes, swap walnuts for raw sunflower seeds.

How do I serve vegan meatballs?
Serve these sweet and sour meatballs Japanese-style with rice, a veggie side dish, and miso soup. Some of my favorite sides include spinach goma-ae, broccoli goma-ae, cucumber ponzu salad, and tataki kyuri (Japanese smashed cucumbers).

More Hearty Japanese Mains

close up of vegan meatballs

If you make these vegan sweet and sour meatballs, don’t forget to leave a comment/rating down below and tag me in your photos on instagram I love seeing all of your tasty recreations!

vegan sweet and sour meatballs on a plate sprinkled with sesame seeds

Vegan Sweet and Sour Meatballs (Japanese-Style) | ヴィーガン肉団子の甘酢あん

Flavorful, hearty vegan meatballs packed with plant protein. Coated in a Japanese-style sweet and sour sauce, they are irresistible!
Prep Time 30 minutes
Cook Time 35 minutes
Rest Time 1 hour
Course Main Course
Cuisine Japanese, Vegan
Servings 4



  • 1 tbsp ground flax/chia seed
  • 3 tbsp water
  • 2 cloves garlic, minced
  • 200 grams shiitake mushrooms**, quartered
  • cup walnuts
  • 1 small onion, chopped into large pieces
  • 1 tbsp olive oil
  • ½ cup rolled or quick oats
  • cups cooked beans (chickpeas, kidney beans, black beans, lentils, etc.)
  • 8 oz (½ block) firm tofu, frozen and thawed
  • 2 tsp miso
  • 2 tbsp nutritional yeast
  • 1 tbsp tomato paste
  • ½ tsp dried thyme
  • tsp nutmeg
  • ¼ tsp baking powder
  • tsp salt and pepper

Sweet and Sour Sauce

  • ¼ cup water
  • ¼ cup ketchup
  • ¼ cup rice vinegar
  • tbsp soy sauce
  • 2 tbsp mirin*
  • 2 tbsp sugar
  • 1 tsp cornstarch


  • Make flax/chia egg: Mix together ground flax/chia seed and water. Set aside to gel while you prepare the meatball filling.
  • Finely chop veggies: Add garlic, mushrooms, and walnuts to a food processor and pulse a few times until finely chopped. Transfer to a bowl. Add onions to food processor and pulse a few times to finely chop. Be careful not to chop the veggies too finely that they start to get mushy – you want small pieces so they add texture.
  • Cook onions: Heat olive oil in a skillet over medium heat. Add onions and a pinch of salt and cook, stirring frequently until lightly browned, 3-5 minutes.
  • Cook mushrooms: Add pulsed mushrooms, walnuts, garlic, and a pinch of salt. Cook, stirring frequently, until mushrooms have softened, about 3 minutes. Remove from heat and transfer the veggies to a large mixing bowl. Let the veggies cool while you prepare the rest of the meatball filling.
  • Make oat flour: Add oats to food processor and process until oats resemble a grainy flour.
  • Add tofu: Squeeze excess water out of thawed tofu. Tear tofu into chunks and add to food processor. Process until tofu is broken up into small crumbles.
  • Pulse in remaining ingredients: Add remaining ingredients to food processor and pulse a few times until well combined.
  • Mix with veggies: Transfer the mixture in the food processor to the bowl with the veggies. Mix until well combined.
  • Chill: Cover the bowl and rest in the fridge for 1 hour.
  • Preheat: If baking in the oven, preheat oven to 400°F/205°C while you shape the meatballs.
  • Shape meatballs: Scoop about 2 tbsp of mixture and roll into a ball. Place on a parchment paper-lined baking sheet or in your air fryer basket. Repeat with remaining mixture – I ended up with 28 meatballs. You can lightly spray them with cooking oil for a crispier texture.
  • Bake: Bake at 400°F/205°C in the middle rack of the oven for 20 minutes, then flip and bake another 5-10 minutes until golden brown.
  • Air fry: Place in air fryer basket and try not to let them touch (you will probably need to cook them in batches). Cook at 375°F/190°C for 15-20 minutes until golden brown.
  • Coat with sauce: Add all sauce ingredients to a pan and bring to a simmer over medium low heat. Stir constantly and simmer 1-3 minutes until slightly thickened. Add meatballs and stir until well coated.
  • Serve: Meatballs will soak up the sauce the longer they sit, so serve immediately after coating with the sauce. If you plan on having leftovers, keep the sauce and meatballs separate.
  • Freezing & reheating leftovers: You can freeze the uncoated, cooked meatballs and sauce in separate freezer bags. To reheat, you can bake, air fry, or pan fry the meatballs (thaw overnight in the fridge to speed up the reheating time). Thaw the sauce in a pan, then add meatballs to coat.


Mushrooms: If you can’t find shiitake mushrooms, cremini mushrooms are a good alternative. White button mushrooms should work too, but cremini and shiitake have more flavor.

Nutrition per serving: 16g fat | 2g sat fat | 51g carbs | 9g fiber | 10g added sugar | 17g protein | 790mg sodium

*Disclosure: This page may contain affiliate links. As an Amazon Associate I earn from qualifying purchases, but the price remains the same to you. Thank you for supporting Ellie Likes Cooking!

Save for later!

Leave a Reply

Your email address will not be published.