Wenzhou Fish Balls (Wenzhou Yu Wan): The Clean, Bouncy Coastal Soup I Over-Mixed, Under-Seasoned, and Boiled Apart 3 Times
Fish balls came out cottony instead of springy? Broth tasted fishy instead of clean and sweet? Fish paste disintegrated in the pot? After ruining this Wenzhou specialty three different ways, I finally learned the secrets: keep everything cold, stir in one direction only, and poach gently, never boil hard.

Ingredients
- • Very fresh croaker or hairtail fillet (skinless, pin bones removed) - 500g
- • Pork back fat, finely minced (optional but recommended) - 40-50g
- • Egg white - 1 large
- • Sweet potato starch (preferred) or potato starch - 70-80g
- • Ginger water (fresh ginger soaked and strained) - 60ml
- • Scallion white, finely minced - 15g
- • Shaoxing wine - 1 tbsp
- • Salt - 5-6g
- • White pepper - 1g
- • Ice-cold water - 80-100ml
- • Clear stock or water for poaching - 1000ml
- • Scallion greens, chopped - 8g
- • Sesame oil (optional) - 1 tsp
Step-by-Step Directions
- 1
Prepare and chill the fish: Pat fish fillets dry, remove every visible pin bone, and cut into chunks. Keep the fish cold (close to 4C) while working; cold fish paste gives noticeably better bounce.
- 2
Build the fish paste: Blend fish and optional pork fat until fine. Move to a large bowl, add egg white, Shaoxing wine, salt, white pepper, and scallion white, then stir in one direction until sticky.
- 3
Add starch and water in stages: Add starch in 2 batches and mix fully each time. Add ice-cold water in 3-4 small additions, stirring in one direction until the paste turns glossy, thick, and elastic. Rest 10-15 minutes.
- 4
Poach gently, never boil hard: Heat clear stock or water until just below a simmer. Wet a spoon, scoop and shape irregular fish balls, and slide them in. Keep the liquid trembling softly, not bubbling aggressively.
- 5
Finish and serve: Once fish balls float, poach 2 more minutes over low heat. Taste the broth and adjust salt. Serve immediately with chopped scallion greens and a few drops of sesame oil if desired.
Why This Dish Is Coastal Comfort
For me, this dish is not “just fish balls.” It is a test of touch and patience. If I rush the stirring, the texture gets grainy. If I chase a stronger flavor with too much soy sauce, I lose the clean marine sweetness that makes Wenzhou fish balls special.
The first good batch I made taught me the real goal: gentle resilience, not chewiness. A proper fish ball should spring back when bitten, but still feel tender. It should taste light enough that you can finish both the fish and the soup without feeling tired of the flavor.
Here is why this dish has endured for generations:
| Reason | Why It Matters |
|---|---|
| Respects ingredients | Wenzhou families transformed bony fish into a soft, safe, nourishing food that both kids and elders could enjoy. |
| The broth is not decoration | When I serve this at home, people always start by tasting the broth first. The soup is part of the identity. |
| Precision matters | No heavy sauce to hide behind. Technique is everything. Each successful bowl is quietly satisfying. |
| Adaptable to mood | Cold days: enrich with dried shrimp. Summer: keep plain with just scallion and white pepper. Same dish, different mood. |
The dish has three components that define great Wenzhou fish balls:
| Component | What Makes It Great | The Failure |
|---|---|---|
| The fish ball texture | Springy, bouncy, tender. Springs back when bitten. | Cottony (over-mixed, too warm). Rubbery (too much starch). Grainy (under-mixed). |
| The flavor | Clean, sweet, marine. Light enough to finish the whole bowl. | Fishy (old fish, insufficient ginger). Flat (under-seasoned). Muddy (too much soy or sesame oil). |
| The broth | Clear, warm, honest. A gentle backdrop for the fish. | Cloudy (boiled too hard). Bland (under-seasoned). |
A proper Wenzhou fish ball is not “chewy” like a rubber band. It is springy — it gives when you bite, then bounces back. That texture comes from technique, not from ingredients alone.
The Science of Bounce and Clean Broth
Before we get to the recipe, let me explain why cold fish matters, why single-direction stirring works, and why poaching (not boiling) is essential.
Why Keep Everything Cold?
| Warm Fish Paste | Cold Fish Paste |
|---|---|
| Protein structure is loose. The paste cannot trap air bubbles. The texture becomes cottony or grainy. | Protein structure is tight. The paste can hold air bubbles. The texture becomes springy and bouncy. |
The science: Fish proteins (myosin) are temperature-sensitive. When they are warm, they cannot form strong bonds. When they are cold, they align and create a gel network that traps air and moisture. This is why Japanese surimi processing also keeps fish cold.
The fix: Keep the fish in the fridge until the last minute. Use ice-cold water for mixing. If your kitchen is warm, set the mixing bowl over another bowl of ice water.
Why Stir in One Direction Only?
| Stirring Back and Forth | Stirring One Direction |
|---|---|
| The protein strands are torn and weakened. The paste cannot hold its structure. The fish balls may disintegrate in the pot. | The protein strands align and form a strong network. The paste becomes elastic and springy. |
The science: Fish proteins are long chains. When you stir consistently in one direction, these chains align parallel to each other. This creates a strong, flexible matrix. Stirring back and forth cuts the chains, weakening the structure.
The fix: Choose a direction (clockwise or counterclockwise) and stick to it for the entire mixing process. No switching.
Why Poach Gently, Never Boil Hard?
| Rolling Boil | Gentle Poach (Trembling Liquid) |
|---|---|
| The aggressive bubbles tear the surface of the fish balls. The texture becomes rough and firm inside. | The fish balls set gently. The texture stays springy and tender. |
The science: Fish balls set through protein coagulation. This happens at around 60-70°C (140-160°F). A rolling boil is 100°C (212°F) — much too hot. The high heat causes the outside to set too fast while the inside is still raw, creating a tough skin and uneven texture.
The fix: Heat the stock until you see small bubbles rising slowly. The surface should tremble, not boil vigorously. If you see large bubbles, lower the heat.
My 3 Big Mistakes (And How to Skip Them)
The Backstory: A Dish That Tests Touch
I used to think Wenzhou fish balls were simple until I ruined two batches by over-mixing and boiling too hard. The lesson was clear: this dish is all about restraint. Keep the fish cold, season lightly, and let a gentle simmer do the work.
Mistake #1: The Fish Balls Were Cottony (Not Springy)
The first time I made Wenzhou fish balls, I did not know about keeping the fish cold. I left the fish on the counter while I prepared other ingredients. The fish paste warmed up to room temperature.
I stirred vigorously, back and forth, because I thought “more mixing = better texture.” When I poached the fish balls, they came out cottony — soft, loose, and grainy. There was no bounce at all.
What I learned: The fish needs to stay cold from start to finish. Warm fish paste cannot form the protein network needed for bounce. And stirring back and forth weakens the structure.
The fix: Keep fish in the fridge until the last minute. Use ice-cold water. Stir in one direction only. If your kitchen is warm, set the mixing bowl over ice.
Mistake #2: The Broth Tasted Fishy (Not Clean)
My second attempt. I kept the fish cold this time. I stirred in one direction. The fish balls had better texture. But the broth tasted fishy. Not fresh — that unpleasant, briny smell.
I had used fish that was not very fresh. I also had not used enough ginger water or Shaoxing wine to mask the fishiness.
What I learned: Wenzhou fish balls rely on the natural sweetness of very fresh fish. If the fish is even slightly old, the fishiness will come through. No amount of seasoning can fully hide it.
The fix: Buy fish the same day you plan to cook. Smell it before buying — it should smell like the ocean, not like fish. Use enough ginger water and Shaoxing wine. They are not optional.
Mistake #3: The Fish Balls Disintegrated in the Pot
My third attempt. The fish was fresh. The paste was cold. But when I dropped the fish balls into the pot, they started falling apart. Some dissolved into the broth. What remained was misshapen and rough.
I had the heat too high. The water was at a rolling boil. The aggressive bubbles tore the fish balls apart before they could set.
What I learned: Poaching requires a gentle touch. The water should tremble, not boil. If you see large bubbles, the heat is too high.
The fix: Bring the stock to just below a simmer. You should see small bubbles rising slowly. The surface should tremble. If it boils, lower the heat immediately.
Step-by-Step Visual Guide
(The instructions in the front matter already cover the steps. Here is the timing breakdown and key moments.)
Part 1: Preparing the Fish Paste (30-40 minutes)
| Step | What to Do | Time | Critical Moment |
|---|---|---|---|
| Debone fish | Pat dry. Remove every pin bone. Cut into chunks. | 10 minutes | One missed bone ruins the experience. |
| Chill everything | Keep fish in fridge. Measure ice-cold water. | — | Target: close to 4°C (40°F). |
| Blend fish | Blend fish + pork fat (if using) until fine. | 2-3 minutes | Do not over-blend into a paste. |
| Mix in seasonings | Add egg white, wine, salt, pepper, scallion. Stir in one direction until sticky. | 2-3 minutes | Paste should look tacky. |
| Add starch (2 batches) | Add half the starch. Mix fully. Add the rest. | 3-4 minutes | No dry spots. |
| Add ice water (3-4 additions) | Add small amounts of ice water. Stir in one direction after each. | 5-6 minutes | Paste should become glossy, thick, and elastic. |
| Rest | Cover bowl. Refrigerate. | 10-15 minutes | Allows proteins to relax. |
Part 2: Poaching the Fish Balls (15-20 minutes)
| Step | What to Do | Time | Critical Moment |
|---|---|---|---|
| Heat stock | Bring clear stock to just below simmer. | 5-7 minutes | Small bubbles. Trembling surface. No rolling boil. |
| Shape fish balls | Wet a spoon. Scoop paste. Slide into liquid. | 3-4 minutes | Irregular shapes are traditional. |
| Poach | Keep liquid trembling. Fish balls will float when done. | 2-3 minutes after floating | Do not boil. |
| Finish | Taste broth. Adjust salt. Add scallion greens and sesame oil. | 1 minute | Serve immediately. |
Total active time: about 40 minutes. The rest is waiting (chilling, resting, poaching).
Pro Tips for Restaurant-Quality Results
These are the small steps that separate springy, clean-tasting Wenzhou fish balls from cottony, fishy failures. I learned every single one by failing first.
| Tip | Why It Works |
|---|---|
| 1. Use very fresh fish. Buy it the same day. | Old fish tastes fishy. No amount of seasoning can fully hide it. |
| 2. Remove every pin bone. Run your fingers along the fillet to check. | Even one missed bone ruins the experience, especially for children or elders. |
| 3. Keep everything cold — fish, bowl, water. Target close to 4°C (40°F). | Cold fish proteins form a stronger gel network. Warm paste = cottony texture. |
| 4. Use ice-cold water, not room temperature water. | Ice water keeps the paste cold while adding necessary moisture. |
| 5. Stir in one direction only. No switching. | One-direction stirring aligns protein chains. Back-and-forth tears them. |
| 6. Add starch in 2 batches, not all at once. | Ensures even distribution. No dry spots in the paste. |
| 7. Add ice water in 3-4 small additions, not all at once. | Gradual addition prevents the paste from becoming too loose. |
| 8. Rest the paste for 10-15 minutes in the fridge. | Allows proteins to relax and the starch to hydrate. |
| 9. Poach gently. The liquid should tremble, not boil. | Rolling boil tears fish balls. Gentle heat sets them evenly. |
| 10. Wet the spoon before scooping. | Prevents the paste from sticking to the spoon. |
| 11. Do not aim for perfect spheres. Irregular shapes are traditional. | Hand-formed shapes cook more evenly. Perfect spheres are often denser. |
| 12. Taste the broth before serving. Adjust salt if needed. | The broth is part of the dish. It should be clean and lightly seasoned. |
A mistake I repeated: I used to keep the pot at a full boil because I feared undercooking. That made the fish balls rough on the surface and firm inside. Now I poach gently and trust carryover heat.
Another mistake I paid for: I once added all the ice water at once. The paste became too loose. I tried to fix it by adding more starch, but then the fish balls were dense and rubbery. Now I add water in small additions.
Ingredient Deep Dive: Fish, Starch, and Fat
Choosing the Right Fish
| Fish | Characteristics | Best For |
|---|---|---|
| Croaker (yellow croaker) | Mild, sweet flavor. Delicate texture. | Traditional Wenzhou fish balls. |
| Hairtail (ribbon fish) | Slightly stronger flavor. Firm texture. | Also traditional, more affordable. |
| Sea bass | Very mild, clean flavor. Easy to debone. | Good substitute when croaker is unavailable. |
What to look for: Bright eyes, red gills, firm flesh, smells like the ocean (not like fish).
What to avoid: Dull eyes, brown gills, soft flesh, fishy or ammonia smell.
Sweet Potato Starch vs. Potato Starch
| Starch | Characteristics | Result |
|---|---|---|
| Sweet potato starch | Traditional. Gives a translucent, slightly bouncy texture. | Best for Wenzhou fish balls. |
| Potato starch | Similar but less bouncy. Slightly more opaque. | Works, but reduce water slightly. |
Why sweet potato starch is preferred: Sweet potato starch creates a more elastic gel network. It also gives the fish balls a slightly translucent appearance.
Pork Back Fat (Optional)
| With Pork Fat | Without Pork Fat | |
|---|---|---|
| The fish balls are richer, softer, more tender. | The fish balls are leaner, firmer, lighter. |
Why add it: Wenzhou fish balls traditionally include a small amount of pork fat for richness. The fat melts during poaching, coating the protein strands and adding tenderness.
Can you skip it? Yes. Use 1 tablespoon of neutral oil instead. The result will be slightly less rich but still good.
Substitutions and Variations
| Instead of… | Use… | Adjustments |
|---|---|---|
| Croaker or hairtail | Sea bass + 1 tsp fish sauce | Sea bass is milder. Fish sauce adds umami depth. |
| Sweet potato starch | Potato starch | Reduce water slightly (70-80ml instead of 80-100ml). |
| Pork back fat | 1 tbsp neutral oil | Add oil with the egg white. |
| Fresh fish (not available) | High-quality frozen fish (thawed) | Frozen fish works, but texture will be slightly less springy. |
| Clear stock | Water | Water works. Add a pinch of salt and a slice of ginger to the poaching liquid. |
Weeknight version: Use frozen fish (thawed). Skip the pork fat. Use water instead of stock. The texture will be slightly less springy, but the dish is still good.
Broth-enriched version (cold days): Add a small piece of dried shrimp and a slice of ginger to the poaching stock. Simmer for 10 minutes before adding fish balls. Remove the shrimp and ginger before serving.
Summer version: Keep the broth very plain — just water, salt, and white pepper. Add only scallion greens at the end. The clean flavor is refreshing.
Guest version: Serve with two small dipping sauces on the side — black vinegar with shredded ginger, and chili oil with soy sauce. Let guests dip, but never mix into the pot.
How I Serve This Dish
When I serve this at home, people always start by tasting the broth first. That small ritual says a lot about the culture behind the dish: the soup is not decoration, it is part of the identity. A good bowl tastes clean, warm, and honest.
What to serve alongside:
- Plain rice or congee (the mild starch pairs perfectly)
- A crisp vegetable dish (stir-fried bok choy or cucumber salad)
- Nothing else — the fish balls and broth are often enough for a light meal
Serving style: Individual bowls. Ladle the fish balls and broth into each bowl. Sprinkle with scallion greens and a few drops of sesame oil (if using).
Leftovers? This dish is best fresh, but it keeps reasonably well.
| Storage | Duration | Notes |
|---|---|---|
| Cooked fish balls + broth (together) | Fridge, 1 day | Texture will be slightly less springy. |
| Cooked fish balls alone (no broth) | Fridge, 2 days | Better to store separately from broth. |
| Raw shaped fish balls (not cooked) | Freezer, 1 month | Freeze on a tray, then transfer to a bag. |
| Reheat | Gentle simmer (not boil), 2-3 minutes | Add fresh scallion greens after reheating. |
Freezing raw fish balls: Arrange shaped raw fish balls on a parchment-lined tray. Freeze until solid. Transfer to a freezer bag. They can go directly from freezer to simmering broth — just add 2-3 extra minutes to the poaching time.
FAQ: Common Questions Answered
Q: Why are my fish balls cottony instead of springy?
A: Two possible reasons. First, the fish paste was not kept cold. Warm fish proteins cannot form a strong gel network. Second, you stirred back and forth instead of in one direction. Keep the fish cold. Stir in one direction only.
Q: Why do my fish balls taste fishy?
A: The fish was not fresh enough. Wenzhou fish balls rely on the natural sweetness of very fresh fish. Buy fish the same day you plan to cook. Smell it before buying — it should smell like the ocean, not like fish.
Q: Why did my fish balls fall apart in the pot?
A: The water was boiling too hard. Aggressive bubbles tear the fish balls apart before they can set. Poach gently — the liquid should tremble, not boil. If you see large bubbles, lower the heat.
Q: Can I use frozen fish?
A: Yes, but the texture will be slightly less springy. Thaw completely in the fridge. Pat dry before using. For best results, use fresh fish.
Q: Can I make this recipe without pork fat?
A: Yes. Use 1 tablespoon of neutral oil instead. The fish balls will be leaner and lighter. The texture will still be good.
Q: Why do I need to add water in small additions?
A: Adding all the water at once can make the paste too loose. If that happens, you might add more starch to compensate, which makes the fish balls dense and rubbery. Small additions give you control.
Q: Do I have to use sweet potato starch?
A: Sweet potato starch is traditional and gives the best texture. Potato starch works, but reduce the water slightly (70-80ml instead of 80-100ml). Cornstarch is not recommended — it makes the fish balls too soft.
Q: How do I know when the fish balls are done?
A: When they float to the surface, they are almost done. Poach for 2 more minutes after they float, then remove one and cut it open. The center should be opaque and cooked through.
Q: Can I make this dish in advance for a dinner party?
A: Partially. You can make the fish paste up to 24 hours in advance (keep refrigerated). You can also shape the raw fish balls and freeze them. But poach them fresh — do not cook them ahead of time and reheat. The texture degrades quickly.
Q: Why do Wenzhou fish balls look irregular, not perfectly round?
A: The irregular shape is traditional. Hand-formed fish balls cook more evenly in gentle broth. Perfectly round spheres often become denser because they are more compact. Embrace the irregular shape — it is part of the dish’s identity.
Three Practical Variations I Use
| Version | Fish | Broth | Best For |
|---|---|---|---|
| Weeknight | Frozen sea bass (thawed) | Water + ginger + salt | Busy evenings |
| Traditional | Fresh croaker | Clear stock | Any day |
| Broth-enriched | Fresh hairtail | Stock + dried shrimp + ginger | Cold days, guests |
Weeknight version steps: Use high-quality frozen fish. Skip the pork fat. Use water instead of stock. The texture will be slightly less springy, but the dish is still deeply satisfying.
Broth-enriched version steps: Add a small piece of dried shrimp and a slice of ginger to the stock. Simmer for 10 minutes before adding fish balls. Remove the shrimp and ginger before serving. The broth will have a deeper, more savory flavor.
Nutritional Breakdown (Per Serving)
| Nutrient | Amount | % Daily Value (approx) |
|---|---|---|
| Calories | 195 | 10% |
| Protein | 25g | 50% |
| Carbs | 11g | 4% |
| Fat | 7g | 9% |
| Fiber | 0g | 0% |
| Sodium | 380mg | 16% |
Notes:
- This is a high-protein, relatively low-fat dish when kept simple.
- Most of the fat comes from the optional pork back fat. Skip it for a leaner version.
- Serve with plain rice or congee plus a crisp vegetable for a complete, balanced meal.
Final Thoughts
Wenzhou fish balls taught me that restraint is the secret. Keep the fish cold. Stir in one direction. Poach gently, never boil hard. When I tried to rush or add more flavor, the result was worse.
I hope my cottony fish balls, fishy broth, and disintegrating batches help you skip those mistakes. This dish is precise, but it is not difficult. Once you feel the texture of the paste in your hands — glossy, thick, elastic — you will know when it is ready.