This sweet and sour vegan ‘fish’, 糖醋素鱼 (Táng cù sù yú) is delightful with a great tang that is so appetizing in each bite.

Vegan or vegetarian fish made from tofu or tofu skin (yuba) and wrapped in seaweed is a very common dish when I was growing up. I learned about this method when I volunteered at my temple. Aside from the homemade version, there are many varieties of ‘fish’ in the form of fillet, whole fish, or cubes at many well-stock Asian markets.
Now, let’s talk about the homemade version. In the past, I wrapped my seasoned tofu with seaweed and finished it off with tofu skin. It was then steamed and pan-fried for the crusty look on the outside. Because many can’t find tofu skin at their store, I decided to wrap it using slightly softened rice paper –the texture is surprisingly great and has a slight chew like eating fish. I do recommend that you try it out with both tofu skin and rice paper to see which one you like best.

Sweet and sour vegan ‘fish’ key ingredients
- Firm tofu – drained or pressed. It’s important to keep the tofu moist but not too wet, so definitely drain out and press the tofu before you blend it.
- Mushrooms – I personally like the mushroom’s umami flavor profile in dishes, so I used King oyster mushrooms that were pan-fried.
- Seaweed or nori – a must have ingredient to create that seafood taste.
- Rice paper to seal the roll together and to give the ‘fish’ the crispy outer layer. This can be sub with softened tofu skin.
How to make sweet and sour vegan fish
This recipe is really easy to put together, please check the tips section below to successfully make it at home.
Step 1: Prepare the filling
To increase the umami flavors in the filling, I’m adding sautéed mushrooms to the mix.
Then, blend it with drained tofu along with the seasoning into a pastey-like texture. Divide into 6 equal portions.
Step 2: Assemble
I like to set up a station when it comes to assembling food, either dumplings or rolls. So,
- Fill a large bowl with water for the rice paper (I used 25-cm large rice paper)
- Set a chopping board next to it
- Place the filling near you
- Have your nori sheet ready
Now, take rice paper and dip it into the water and make a few swirls to moisten the paper.
Top it with a sheet of nori.

Place a portion of filling on the lower end of the nori.

Bring the sides to the middle, then lift the bottom of the sheet and fold over the filling, leaving some gaps as the filling will expand during frying. Roll to the top to seal.

Step 3: Cook the rolls
Next, in a large skillet, add enough oil to rise up to 1-cm to the side of the pan. Set to medium heat. Test oil using a pair of chopsticks, if it starts to bubble around the chopstick, then the oil is ready. Carefully slide the rolls into the hot oil. Do not overcrowd and fry in batches if needed.

Shallow fry the rolls for about 6-8 minutes until a white crust forms on the outside. Do not flip before a crust is formed. Transfer to the plate lined with paper towels to absorb excess oil.

Once they are cool enough to handle, slice the roll into 3 or 4 sections. I find that a serrated knife works the best.

Now, dust the open end(with tofu filling) with a thin layer of cornstarch. Using the same pan, scoop up the remaining oil into a bowl and leave a thin layer of it in the pan. Then, pan-fry the open face slices until golden brown. Remove and set aside.
Step 4: Put together
In the same pan, add the sauce ingredients and bring it to a boil. Cook while stirring to ensure the sugar has dissolved. Gradually add the cornstarch slurry and continue to cook until it thickens to your desired consistency.
Next, fold in the cucumbers and tomatoes and cook for about 30 seconds. Finally, toss the vegan ‘fish’ in this sauce until well-combined. Serve warm with rice.
Sweet and sour vegan ‘fish’ FAQs
- Drain or press the tofu first. Alternatively, you can squeeze out the water using a nut milk bag.
- How soft does the rice paper needs to be? It needs to be slightly firm after you dip it in the water. The soaking time depends on how thick your rice paper is. For example, the Blue dragon brand has a thinner rice paper compared to the Three Ladies brand. So, I rotate the latter longer in water to make sure the whole paper is completely covered with water without any dry spots. Even if the rice paper looks dry, as long as they are pliable, it is fine. It will soften over time.

- The rice paper diameter is between 22cm-25cm and is slightly larger than the standard nori sheet.
- Do not pack the rolls tightly when you roll it – the filling will expand during cooking and have a high chance of bursting. If that happens, do not pan-fry that side. Once cool, you can either roll it with another layer of softened rice paper or leave it as-is before cutting it. Then, continue to coat with cornstarch and pan-fry the tofu side until golden brown.
- Use a serrated knife when slicing – this will create less messy slices.
- The double pan-fry helps keep the filling intact and creates a crispier texture.
- Serve immediately – the longer the ‘fish’ sits in the sauce, the chewier it will get.

Other vegan seafood recipes to try
- Black pepper ‘crab’ made from cauliflower
- Vegan unagi (eel) made from tofu and potato
- Kung Pao vegan ‘squid’ made from konnyaku
This Sweet and sour vegan ‘fish’ is
- Allium-free
- Dairy-free and Vegan
- has a perfect tang from the ketchup and vinegar
- Easily customizable – use gluten-free soy sauce for a gluten-free option
- Simple-to-make
- Appetizing

If you try this recipe, I would love to hear your feedback and see your beautiful re-creation. Leave me a comment, rate it, and tag @woon.heng and #woonheng to your photos on Instagram or Facebook. Happy cooking, friends!

Sweet and sour vegan ‘fish’ – 糖醋素鱼
Ingredients
- 10 oz King trumpet mushrooms
- 16 oz firm tofu pressed or moisture removed
- 6 nori sheets
- 6 large rice paper [22cm-25cm]
- ½ teaspoon sugar
- ½ teaspoon mushrooms seasoning
- 1 teaspoon salt
- dash of white pepper
- 1 tablespoon cornstarch plus more for dusting
Sauce
- 1 cup water
- 2 tablespoons ketchup
- 1 tablespoon rice vinegar
- 2 tablespoon sugar
- 1 teaspoon lemon juice
- 1 tablespoon soy sauce
- ½ teaspoon salt
- 1 small tomato cut into cubes
- ¼ cup chopped cucumber skin removed
Cornstarch slurry
- 1 teaspoon cornstarch + 1 teaspoon water mix to combine
Instructions
- Using your hands, tear the mushrooms into large pieces. (Alternatively, you can do this with a knife.)
- Heat a nonstick skillet with 2 teaspoons of oil over medium-low heat. Sauté the mushrooms until they start to form a brown crust, 3 to 5 minutes. Season with a pinch of salt and transfer to a food processor.
- Then, add the tofu, breaking it into smaller pieces while adding. Season with sugar, mushrooms seasoning, salt, pepper, and a tablespoon of cornstarch. Blend until thoroughly combined. Empty to plate and divide into 6 equal portions.
- Setup up the wrapping station. Fill a shallow plate with clean water and prepare a chopping board.
- To make the vegan 'fish', dip a rice paper in the water and rotate a few times until you don't see any dry spot. The rice paper remains slightly firm. Place it on the chopping board and top it with a sheet of nori and press gently to adhere.
- Add a portion of filling on the lower end of the sheet, then fold the left and right edges in. Lift up the bottom and loosely fold over the filling. Then roll it to the top to seal. Important note: Because the filling will expand during cooking, loose packing will prevent the skin from bursting.
- Now, add enough oil to a large skillet to rise about 1-cm up the sides. Set over medium heat. To test if the oil is ready, you can use a thermometer (aim for 325°F) or drop a small piece of dried rice paper into the oil (if it sizzles, then the oil is ready).
- Gently slide the wrapped rolls into the hot oil, leaving ½-inch gap in between as the skins are sticky at this point. Shallow fry until a crust forms at the bottom. Turn the rolls with a tong and fry all sides until crispy, about 8-10 minutes. Be sure not to move the rolls around too much until after a crust is formed. If you see cracks, stop frying that side – you'll have another chance to cook it later. Keep an eye on the temperature, if it browns too quickly, lower the heat but maintain a sizzle when frying.
- When ready, transfer cooked rolls to a plate lined with paper towels to absorb excess oil. Once cool, slice each log into 3 or 4 sections. Coat the open side that shows the tofu filling with a thin layer of cornstarch.
- Using the same pan with the remaining oil, pan-fry the coated sides until golden brown. Set aside.
- Clean the pan and set it to medium heat. Add the water, ketchup, vinegar, sugar, lemon juice, salt, soy sauce, and bring to boil.
- Using the back of the spatula, stir until the sugar has dissolved completely. Slowly thicken the sauce with the slurry until it reaches your desired thickness. Please do not add all the slurry at once as it will turn lumpy.
- Fold in the tomatoes and cucumber and toss for another 30 seconds. Finally, add the vegan 'fish' and gently toss until they are covered with sauce.
- Serve warm with a bowl of rice.
Video
Feel free to pin the below picture on your Pinterest Board for easy reference.

Hi Can I keep the finished ‘fish’ in the chiller or freezer until I need it ?
Thank you
Thank you so much for this delicious recipe! I call it sweet and sour ‘tofish’ and my husband requests it regularly. Even our non-vegetarian friends love it. One thought – I wonder if the frying steps might work in an air fryer to reduce the oil. I’ll try that sometime and let you know. Thanks again WoonHeng! 🙂
Yum yum yum yum yum
Tomorrow 2nd time I will make it.
Thanks so much for the recipe
… kamsiaaaaa kamsiaaaa 🙂🙂
Wow! It our favorite vegan fish!!!! I cook this every Friday for my and my daughter! And for Happy new year it was like a ⭐️ star on our table!!!! And my non vegan friends loved this!!! Thank u so much for perfect recipe ❤️❤️❤️❤️
My husband and I loved this recipe! I will definitely be making this again.
I love how creative you are with your recipes, thanks to you i’m able to eat food that I haven’t been able to in years. If you ever release a cookbook i’d buy it in a heartbeat!
Very delicious! and fun to make, but not easy. If I were to make this again, I would use extra firm tofu as mine had too much water and I would make smaller rolls so that the pieces are bite size.. it was akward to eat. Sauce was delicious and the crispy skin was lovely.
Yay, thanks so so much, Silver for your all your amazing feedback. Glad everything worked out and thanks for letting me know your version of firm tofu is still too soft. In the future, you can drain them and press to remove the moisture before adding them to the mushrooms. Many thanks, have a good one.
I have made many of Woon Heng’s recipes and sweet and sour vegan ‘fish’ is one of my favorites. The ‘fish’ looks so much like the ikan tenggiri goreng – I kid you not! The ‘fish’ has the crispiness because it uses rice paper and nori sheets! What a novel idea! The sauce is spot on! Will definitely make this again…and I’m not vegan, just finding ways to cook healthier and tastier.
I made this today and it came out amazing! I followed the recipe exactly, and also made rice to go with it. Incredible recipe!
Once again the recipe is perfectly accurate. Super easy to make.
I serve at least once a week one of your dishes for my vegan clients and it is a total joy for me and for them.
Thanks so much
I’ll keep trying your recipes.
Unfortunately even after pressing it was still too wet! but I couldn’t know until I reached the end of the recipe, still tasty! shame because it does take a bit of effort…will try again 🙂
Super yummy!
I made this yesterday and I am fascinated by the combination of flavors and crispiness of outer layer of the “fish”. Rice paper and nori together, now this is something to remember.