Flavorful, hearty vegan meatballs packed with plant protein. Coated in a Japanese-style sweet and sour sauce, they are irresistible!
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.
- 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):
- Cook veggies to remove excess moisture.
- Pulse ingredients in food processor to form the meatball mixture.
- 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.
- Shape into meatballs about 2 tbsp in size. I was able to fill one large sheet pan with 28 meatballs.
- Cook in the oven or air fryer until browned.
- Simmer sauce in a pan until thickened.
- Coat meatballs with sauce.
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.
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
- Ankake Tofu (Tofu with Savory Dashi Sauce)
- Vegan Japanese Cabbage Rolls
- Vegan Mapo Tofu
- Sweet and Sour Tofu
- Chili Sauce Tofu & Broccoli
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 @ellielikes.cooking. I love seeing all of your tasty recreations!
Vegan Sweet and Sour Meatballs (Japanese-Style) | ヴィーガン肉団子の甘酢あん
- 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
- 1½ 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
- 1½ tbsp soy sauce
- 2 tbsp
- 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.
Nutrition per serving: 16g fat | 2g sat fat | 51g carbs | 9g fiber | 10g added sugar | 17g protein | 790mg sodiumHide
*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!