Chinese fish soup is a light, savory broth with tender fish, ginger, leafy greens, and tofu. This Cantonese-inspired home-style version uses mushrooms and stock for depth, while a short simmer keeps the fish delicate; regional and family versions vary in their choice of vegetables, broth, and fish.
Ingredients
- 1 lb 4 oz (570 g) firm white fish fillets, such as cod, haddock, tilapia, or sea bass, skin removed if desired
- 1 tsp (5 g) fine salt, divided
- ¼ tsp (0.5 g) ground white pepper, or black pepper
- 1 tbsp (15 ml) neutral oil, such as canola or vegetable oil
- 2 oz (55 g) fresh ginger, peeled and cut into thin matchsticks
- 3 scallions, about 1½ oz (45 g), white and green parts separated and sliced
- 5 oz (140 g) fresh shiitake mushrooms, stems removed and caps sliced
- 1 tbsp (15 ml) Shaoxing rice wine
- 6 cups (1.4 L) low-sodium chicken stock or fish stock
- 3 cups (225 g) napa cabbage, thinly sliced, or 3 cups (90 g) baby spinach
- 12 oz (340 g) soft or medium-firm tofu, cut into ¾-inch (2 cm) cubes
- 1 tbsp (15 ml) light soy sauce, plus more to taste
- 1 tsp (5 ml) toasted sesame oil
- 1 tbsp (15 ml) water, if needed to adjust the seasoning or dilute a very salty broth
- 1 lime, cut into wedges, for serving (optional)
Instructions
- Prepare the fish and vegetables. Pat the fish dry and run your fingers over each fillet to check for pin bones, removing any with clean tweezers. Cut the fish into roughly 1½-inch (4 cm) pieces so they cook at about the same rate. Season with half the salt and all the white pepper. Slice the ginger, scallions, mushrooms, and cabbage; cube the tofu gently so it holds its shape. Keep the fish refrigerated while you prepare the other ingredients if the prep takes longer than a few minutes.
- Build a fragrant base. Heat the neutral oil in a medium-large pot over medium heat. Add the ginger and the white parts of the scallions and stir for about 1 minute, until fragrant but not browned. Add the sliced shiitake and cook for 1 minute more. If the ginger starts to darken, lower the heat; scorched ginger can make the broth taste bitter.
- Add the wine and stock. Pour in the Shaoxing rice wine and stir for about 30 seconds, scraping up anything lightly stuck to the pot. Add the stock and bring it just to a gentle boil, then reduce the heat and simmer uncovered for 10 minutes. A gentle simmer extracts flavor without reducing the liquid too quickly. Shaoxing rice wine is common in Chinese cooking; if it is hard to find, use dry sherry or omit it, knowing the broth will taste a little less rounded.
- Cook the cabbage and tofu. Add the napa cabbage and simmer for 4 minutes, until it begins to soften but still has some structure. Carefully slide in the tofu and simmer for 3 minutes. Stir slowly around the edge of the pot or gently shake the pot rather than stirring vigorously, which can break the tofu into small pieces.
- Poach the fish gently. Lower the fish pieces into the broth in a single layer as much as possible. Keep the soup at a low simmer, not a rolling boil, and cook for about 6 minutes, depending on the thickness of the pieces. Check the center of the thickest piece with a food thermometer: USDA FSIS lists 145°F (63°C) as the safe minimum internal temperature for fish. The flesh should also look opaque and separate easily into flakes, but use the thermometer for the safety check.
- Season and finish. Turn off the heat. Stir in the light soy sauce, sesame oil, the remaining salt, and the green parts of the scallions. Taste the broth before adding more soy sauce, since stock salt levels differ. If it tastes too concentrated, add the measured water or a little more hot water; if it needs more savory depth, add soy sauce a teaspoon at a time.
- Serve while hot. Ladle broth, vegetables, tofu, and fish into warm bowls, distributing the fish carefully so it does not break apart. Offer lime wedges at the table if you like a bright, tangy contrast. The lime is a finishing touch, not a substitute for cooking the fish to a safe temperature.
Tips
- Choose fish that holds together. Cod, haddock, halibut, sea bass, and tilapia work well when cut into generous pieces. Very delicate fish can still be used, but add it after the vegetables and tofu are cooked, and handle it as little as possible. Avoid thin pieces that will turn dry before the center reaches the safe temperature.
- Keep the broth gently simmering. A hard boil can break up the fish and tofu and make the soup look cloudy. Once the fish goes in, watch the surface for small, steady bubbles and lower the heat if it begins to churn.
- Adjust for the stock you have. Low-sodium stock gives you room to season at the end. If using regular stock, start with less salt and taste after adding the soy sauce. For a deeper mushroom flavor, soak a small amount of dried shiitake separately, then strain and add some of its soaking liquid; grit at the bottom should not go into the soup.
- Use substitutions thoughtfully. Baby spinach cooks faster than napa cabbage, so stir it in during the final minute before adding the fish. If you cannot find shiitake, use cremini mushrooms; they give a milder, less distinctly earthy broth. Dry sherry can replace Shaoxing wine, while omitting the wine altogether makes the soup alcohol-free.
Serving Suggestions
Serve Chinese fish soup as a light main course with steamed jasmine rice, or spoon it over rice in each bowl so the grains absorb the ginger-scented broth. Plain noodles are another easy accompaniment; cook them separately and add them to bowls just before ladling over the soup, which keeps them from soaking up too much broth in the pot. A plate of quickly blanched greens, such as gai lan or bok choy, makes the meal more substantial without competing with the soup’s mild flavor.
Set out extra sliced scallions, white pepper, and soy sauce so each person can season their own serving. Lime is optional: a small squeeze can sharpen the broth, while leaving it out keeps the flavor more traditional in spirit. If serving several dishes, offer the soup in small bowls as part of a shared meal rather than treating it as the only course.
Variations
Use a different leafy vegetable. Napa cabbage is mild and stays pleasantly tender. Baby spinach gives a softer texture and needs only a brief wilt, while bok choy adds a slightly crisp stem and a more pronounced green flavor. For larger bok choy, slice the stems and add them a few minutes before the leaves.
Make it with a clearer, lighter broth. Replace the chicken stock with fish stock or a light vegetable stock. A mild stock lets the ginger and fish stand out; avoid strongly flavored or very salty stock, which can overwhelm the delicate ingredients. You can also replace up to 2 cups (475 ml) of the stock with water for a less intense bowl.
Add more vegetables. Thinly sliced carrots, snow peas, or enoki mushrooms fit easily into the soup. Add carrots with the napa so they have time to soften, and add snow peas or enoki during the last few minutes. Keep the total amount of vegetables close to the original recipe so the broth still covers the fish and tofu.
Make it without tofu or rice wine. Simply leave out the tofu and use an extra cup (75 g) of cabbage or a few more mushrooms. If you prefer not to use Shaoxing wine, skip it rather than replacing it with sweet cooking wine; the soup will still work, with a slightly simpler aroma. These are practical variations, not a claim that one set of ingredients defines every Chinese fish soup.
Storage and Reheating
Cool leftovers promptly and refrigerate them within 2 hours of cooking, preferably in shallow, covered containers. For best texture, store the fish and broth together only if you expect to eat them within a day; the fish will continue to soften as it sits. Refrigerated soup keeps for 3 to 4 days, though the fish and tofu are most appealing during the first 1 to 2 days. Do not leave the pot at room temperature to cool for an extended period.
Reheat only the portion you plan to eat, in a covered saucepan over medium-low heat, stirring carefully. Heat leftovers to 165°F (74°C), checking the center with a food thermometer, and avoid prolonged boiling because it can break up the fish. A microwave also works: cover the bowl loosely, heat in short intervals, and stir gently between intervals so it warms evenly. If the broth has thickened or reduced, add a splash of water before reheating.
Freezing is possible for up to 2 months, but the fish and tofu may become softer or more crumbly after thawing. Freeze promptly in a freezer-safe container, thaw overnight in the refrigerator, and reheat to 165°F (74°C). For the best result, freeze the broth and vegetables before adding the fish, then cook fresh fish in the reheated soup.
Frequently Asked Questions
What fish is best for Chinese fish soup?
Choose a mild, firm white fish that can be cut into pieces without falling apart. Cod, haddock, tilapia, and sea bass are practical choices. Freshness and thickness matter more than choosing a particular species: evenly sized pieces are easier to cook safely without overcooking the edges.
Can I use frozen fish?
Yes. Thaw it safely in the refrigerator, then pat it very dry before seasoning. Excess water can dilute the broth and make the fish more likely to break. If the fish is vacuum-packed, follow the package directions for thawing and remove it from the packaging as directed; do not thaw it on the counter.
Why is my fish soup cloudy?
Cloudiness is usually a texture issue rather than a safety problem. A vigorous boil, stirring after the fish is added, or a delicate fillet breaking apart can release small particles into the broth. Keep the soup at a gentle simmer and handle the fish carefully. If you want a clearer bowl, strain the stock before adding the vegetables, though the finished soup may still become slightly cloudy.
Can I make the broth ahead?
Yes. Prepare the broth through the 10-minute simmer with the ginger and mushrooms, cool it promptly, and refrigerate it for up to 3 to 4 days. When ready to eat, bring the broth to a simmer, cook the cabbage and tofu, and add fresh fish last. Cooking the fish only when serving helps it retain a better texture.
Can I use fish bones or a whole fish?
Fish bones can make a flavorful stock, but this recipe is written for prepared fillets and ready-to-use stock. If using a whole fish, it needs careful cleaning and a different cooking approach; ask a fishmonger to clean and portion it if needed, and check the thickest edible part reaches 145°F (63°C). Remove bones carefully at the table, especially when serving children.
Is this soup spicy?
No. Ginger and white pepper bring gentle warmth, but the broth is not meant to be hot. For a spicier bowl, add a small amount of sliced fresh chili or chili oil at serving, allowing everyone to adjust their own portion. Chili oil can also add extra salt and richness, so taste before adding more soy sauce.
Related
- Bulalo Filipino Beef Marrow Stew: A Slow-Simmered Recipe
- Butternut Squash Indian Soup with Coconut and Spice
- Broccoli Soup Indian Style with Warm Spices
More recipes to cook
Safety notes: safe minimum internal temperatures from USDA FSIS; raw and undercooked fish guidance from the U.S. FDA. Food safety notes
Spotted an error? Tell us and we will correct it (corrections policy).