River fish has a reputation. People call it muddy, funky, “too fishy” — and honestly, if you’ve ever had a badly cooked carp or tilapia, you understand why. But in Chengdu, where I grew up watching my parents run their restaurant kitchen, river fish was never the problem. The technique was. Get the aromatics right, build a proper red-oil base, and that so-called muddy flavor turns into something deep, savory, and honestly a little addictive.

This is the version I make at home when I want the whole thing in one pot and I don’t feel like fussing. It uses doubanjiang, huadiao wine, and a small bag of instant noodle seasoning powder — yes, really — to build a sauce that tastes like it simmered all day. It didn’t. You’ll be eating in about thirty-five minutes.
What Is Braised River Fish?
Braised river fish — 河鱼不腥 in the original, which literally means “river fish without the fishy smell” — is a Sichuan home-style braise. Freshwater fish goes into a shallow layer of seasoned liquid, usually with doubanjiang (fermented broad bean paste) and chili, and simmers until the flesh turns silky and the sauce clings to every bite. It’s different from a Hunan-style steamed fish head or a Cantonese steamed whole fish, which rely on freshness and restraint. This one leans on fermentation, heat, and a long, slow bubble.
The trick with river fish isn’t masking the funk. It’s drowning it in flavor so bold that your brain stops looking for it. Doubanjiang does that job better than almost anything else in the pantry.
I use about 5 jin (roughly 2.5 kg) of fish here, which sounds like a lot, but it shrinks and the sauce is the point. If you’re cooking for two, halve everything and use a smaller pot. The technique scales fine.
Why This Recipe Works
- Two kinds of doubanjiang. Pixian doubanjiang gives the red oil and fermented depth; regular doubanjiang rounds out the salt and body. Using only one leaves the sauce flat.
- Huadiao wine, not cooking sherry. The shaoxing-style rice wine cuts through the fishy notes in a way that vinegar alone can’t. Don’t skip it.
- The instant noodle seasoning packet. This is the honest caveat — it’s a shortcut, and it works because those packets are basically MSG, chicken powder, and spices. If you’d rather not, use 1 teaspoon of chicken bouillon plus a pinch of white pepper and a tiny pinch of MSG.
- Potatoes as a sponge. They soak up the sauce and turn creamy, which is why I stopped serving rice with this. The potato is the starch.
- Layering, not stirring. Once the fish goes in, you don’t stir. You ladle sauce over it. Stirring breaks the flesh and clouds the sauce.
Equipment Needed
- A wide, heavy pot or Dutch oven (at least 4 quarts) — something with a lid
- A wok or skillet for blooming the doubanjiang
- A wooden spoon or spatula
- A ladle for basting the fish
- A cutting board and a sharp knife for the onions and potatoes
If you don’t own a Dutch oven, a large stainless steel pot works. Just watch the heat — the sauce scorches faster on thin metal. For more on getting the heat right, see my notes on why sauces separate in the wok.
Ingredients
- 5 jin (about 2.5 kg) river fish, cleaned and cut into large chunks — carp, tilapia, or catfish all work
- 1 large onion, sliced thick
- 20 g Pixian doubanjiang (郫县豆瓣酱)
- 20 g regular doubanjiang
- 15 g white sugar
- 2 teaspoons five-spice powder
- Chili flakes or dried chili segments, to taste — I use about 1 tablespoon of flakes
- 2 packets instant noodle seasoning powder (or 1 teaspoon chicken bouillon + pinch MSG + pinch white pepper)
- 50 ml huadiao (Shaoxing-style) wine
- 50 ml light soy sauce
- 10 ml dark soy sauce
- Neutral oil, for the wok — about 1/2 cup
- 2–3 medium potatoes, peeled and cut into thick wedges (optional, but recommended)
- A pinch of MSG, to finish
Ingredient Notes
River fish: Ask your fishmonger to clean and cut it into 2-inch chunks, bones and all. If you’re using tilapia, keep the head on — it adds body to the sauce. Catfish is the most forgiving for beginners because it holds together better.
Doubanjiang: Pixian is the gold standard. If you can only find one kind, use Pixian and add a splash of regular soy sauce to compensate. The two-paste blend matters, but it’s not a dealbreaker.
Huadiao: Don’t substitute dry sherry unless you have to. The flavor is close but the sweetness is different. If you’re out, use 40 ml dry sherry plus 1 teaspoon extra sugar.
Instant noodle packets: Any brand works. I keep the packets from ramen or instant noodles in a jar just for this. If you’re avoiding MSG, the bouillon substitute above is fine — just taste and adjust salt.
For a deeper dive into matching sauces to proteins, my guide on why pork goes dry in stir-fry explains the same moisture-retention principle that applies here.
Prep & Mise en Place
Get everything cut and measured before the wok gets hot, because once the doubanjiang hits the oil, things move fast.
- Fish: pat the chunks dry with paper towels. Moisture is the enemy of browning and it makes the sauce watery. Let them sit uncovered for 10 minutes if you have time.
- Onion: slice into thick half-moons, about 1/4 inch.
- Potatoes: peel and cut into 1-inch wedges. Keep them in cold water until needed so they don’t brown.
- Measure out the doubanjiang, sugar, five-spice, chili flakes, wine, soy sauces, and noodle packets into small bowls.
If you’re new to working with fermented bean paste, this is a good moment to read my oyster sauce brand ranking — same logic applies to picking a doubanjiang you actually like the taste of.
Honest limitation: this recipe is forgiving on flavor but not on fish quality. If your fish smells aggressively of mud before cooking, no amount of doubanjiang will fully hide it. Buy the freshest fish you can, and if you’re stuck with frozen, thaw it in the fridge overnight and pat it very dry.
Cooking Process
Step 1: Bloom the Pixian doubanjiang in oil
Heat about 1/2 cup of neutral oil in a wok over medium heat until it shimmers — you want it hot but not smoking. Add the 20 g of Pixian doubanjiang and stir constantly with your spatula, pressing it into the oil. After about 90 seconds, the oil will turn a deep brick red and smell nutty and fermented. That’s your signal. If it starts to darken too fast, pull the wok off the heat for a few seconds.
Step 2: Add chili flakes, second doubanjiang, and five-spice
Turn the heat to medium-low. Add the chili flakes, the 20 g of regular doubanjiang, and the 2 teaspoons of five-spice powder. Stir for about 45 seconds — just until the chili darkens slightly and the five-spice smells warm and toasty. Don’t walk away. Chili flakes burn in seconds and turn the whole sauce bitter.
Step 3: Add onion, soy sauces, and huadiao wine
Add the sliced onion, 50 ml light soy sauce, 10 ml dark soy sauce, and 50 ml huadiao wine. It will hiss and steam. Stir for about 2 minutes, until the onion softens slightly and the raw alcohol smell cooks off. You should smell sweet wine and soy, not sharp booze.
Step 4: Spread the base in the pot
Scrape everything from the wok into your heavy pot and spread it into an even layer across the bottom. This becomes the bed the fish sits on. It keeps the fish from sticking and gives the sauce its backbone.
Step 5: Add fish, water, sugar, and noodle seasoning
Lay the fish chunks on top of the sauce base in a single layer — don’t stir them in. Pour in enough water to almost cover the fish, about 1.5 to 2 cups depending on your pot. Bring to a boil over high heat, then immediately reduce to a gentle simmer. Add the 15 g sugar and the contents of the 2 instant noodle seasoning packets. Ladle a little sauce over the top of the fish, cover, and simmer for 10 minutes. Do not stir.
Step 6: Add potatoes and finish
Tuck the potato wedges around the fish — not on top, or they’ll crush the flesh. Cover and simmer another 12 to 15 minutes, until a knife slides into a potato with no resistance and the fish flakes easily under a spoon. Taste the sauce. Add a pinch of MSG and a little more sugar if it’s too sharp. Ladle sauce over the fish one last time and serve straight from the pot.
Common Mistakes When Making Braised River Fish
Stirring the fish. Once the fish goes in, the only motion should be ladling sauce over the top. Stirring breaks the chunks into shreds and turns the sauce cloudy. If you’re worried about sticking, shake the pot gently instead.
Adding too much water. You want the liquid to almost cover the fish, not drown it. Too much water and the sauce never reduces enough to cling. If you overshoot, simmer uncovered for the last 5 minutes.
Burning the chili flakes. Step 2 is the danger zone. Keep the heat at medium-low and stir constantly. If the chili smells acrid, start over — there’s no fixing bitter chili oil.
Skipping the sugar. Fifteen grams sounds like a lot, but it’s what balances the doubanjiang’s salt and the wine’s acidity. Without it, the sauce tastes harsh.
Using cold fish straight from the fridge. Cold fish drops the pot temperature and the braise never comes back to a proper simmer. Let the fish sit out for 15 minutes while you prep, or at least pat it dry and bring it to room temperature.
Variations
Beer braise: Replace the huadiao and half the water with a light lager. The malt adds a slightly sweet, toasty note that works surprisingly well with catfish.
Tomato version: Add 2 chopped tomatoes with the onion in Step 3. The acidity brightens the whole pot and pairs beautifully with tilapia. If you like tomato-and-egg flavors, this is a natural crossover — see my tomato egg drop soup for the same sweet-savory balance.
No potatoes: Use daikon wedges or thick slices of lotus root. Both hold their shape and soak up sauce. Daikon takes about the same time as potatoes; lotus root needs 5 extra minutes.
Extra heat: Add 6 to 8 dried facing-heaven chilies with the onion. Break them in half first so the seeds release their heat.
Frequently Asked Questions
Can I use frozen fish? Yes, but thaw it overnight in the fridge and pat it very dry. Frozen fish releases more water, so reduce the added water by about 1/4 cup.
What if I can’t find doubanjiang? Use 30 g of Korean gochujang plus 1 tablespoon of miso. It won’t be identical, but it’ll be close enough to satisfy the craving.
How do I know when the fish is done? The flesh should flake when you press it with a spoon and the thickest chunk should be opaque all the way through. River fish chunks take about 10 minutes of simmering; larger pieces take 12.
Is this very spicy? Moderately. The doubanjiang brings warmth, not fire. If you want it mild, halve the chili flakes and skip the dried chilies.
Can I make it ahead? Yes. Cook it through, cool it quickly, and refrigerate up to 2 days. The flavor actually improves overnight. Reheat gently on the stovetop with a splash of water.
How to Serve
Serve straight from the pot with a big spoon and shallow bowls. The potatoes are the starch, so you don’t need rice — though a bowl of plain rice on the side is never wrong. A crisp cucumber salad or quick-pickled radish cuts through the richness. And if you want a soup to start, my tender pork liver soup is a light, clean opener that won’t compete with the braise.
For a vegetable side, garlic oyster sauce broccoli is a five-minute companion that balances the plate. You can find that recipe here.
Storage & Reheat
Cool leftovers within an hour and refrigerate in a sealed container for up to 2 days. The fish will firm up in the fridge — that’s normal. Reheat in a covered pot over low heat with 2 tablespoons of water, or in the microwave at 50% power, stirring once. Don’t boil it hard or the fish will fall apart. I don’t recommend freezing this; the potatoes turn grainy and the fish gets mushy.
Allergen Notice
This recipe contains soy (soy sauce, doubanjiang), wheat (soy sauce, doubanjiang, noodle seasoning), and fish. The instant noodle packets may contain traces of egg, milk, or sesame depending on the brand. Check labels if you’re cooking for someone with allergies. If you’re avoiding MSG, use the bouillon substitute in the ingredient notes.
Nutrition Disclaimer
Nutrition information is estimated and will vary based on the fish you use, the brand of doubanjiang, and how much sauce you actually eat. It is not a substitute for professional dietary advice. If you’re tracking sodium, note that doubanjiang and soy sauce are both very high in salt.
About the Author & Recipe Development
I’m Lin. I grew up in my parents’ restaurant kitchen in Chengdu, where every dish on the menu had to earn its place — no shortcuts, no filler. This braise is the kind of food I actually cook at home: bold, unfussy, and built on ingredients I keep in the pantry. I developed this version over a dozen pots, mostly because I wanted river fish that didn’t taste like river. The noodle packet trick came from a late-night experiment when I was out of chicken bouillon, and it stuck. If you’re new to Sichuan cooking, start with this one. It’s forgiving.
For more foundational techniques, my guide on velveting chicken for stir-fry covers the same moisture-protection principle that keeps this fish tender.
Authoritative References
- Fuchsia Dunlop, The Food of Sichuan — the definitive English-language reference on doubanjiang and Sichuan braising technique.
- Grace Young, The Breath of a Wok — for wok heat control and oil temperature cues.
- Harold McGee, On Food and Cooking — for the science of how fermented pastes and alcohol interact with fish proteins.


Braised River Fish (河鱼不腥): No-Fishy One-Pot Wonder!
Equipment
- Heavy pot or Dutch oven
- Wok or Skillet
- Wooden spoon or spatula
- Ladle
- Cutting Board
- Sharp Knife
Ingredients
Main
- 5 jin river fish cleaned and cut into large chunks; carp, tilapia, or catfish
- 1 large onion sliced thick
- 20 g Pixian doubanjiang 郫县豆瓣酱
- 20 g regular doubanjiang
- 15 g white sugar
- 2 teaspoons five-spice powder
- 1 tablespoon chili flakes or dried chili segments to taste
- 2 packets instant noodle seasoning powder or 1 tsp chicken bouillon + pinch MSG + pinch white pepper
- 50 ml huadiao (Shaoxing-style) wine
- 50 ml light soy sauce
- 10 ml dark soy sauce
- 1/2 cup neutral oil for the wok
- 2 medium potatoes peeled and cut into thick wedges; optional but recommended
- 1 pinch MSG to finish
Instructions
- Heat about 1/2 cup of neutral oil in a wok over medium heat until it shimmers. Add the 20 g of Pixian doubanjiang and stir constantly, pressing it into the oil. After about 90 seconds, the oil will turn a deep brick red and smell nutty and fermented.
- Turn the heat to medium-low. Add the chili flakes, the 20 g of regular doubanjiang, and the 2 teaspoons of five-spice powder. Stir for about 45 seconds, until the chili darkens slightly and the five-spice smells warm and toasty. Don’t walk away — chili flakes burn in seconds.
- Add the sliced onion, 50 ml light soy sauce, 10 ml dark soy sauce, and 50 ml huadiao wine. Stir for about 2 minutes, until the onion softens slightly and the raw alcohol smell cooks off.
- Scrape everything from the wok into your heavy pot and spread it into an even layer across the bottom. This becomes the bed the fish sits on.
- Lay the fish chunks on top of the sauce base in a single layer — don’t stir them in. Pour in enough water to almost cover the fish, about 1.5 to 2 cups. Bring to a boil, then reduce to a gentle simmer. Add the 15 g sugar and the 2 instant noodle seasoning packets. Ladle a little sauce over the fish, cover, and simmer for 10 minutes without stirring.
- Tuck the potato wedges around the fish — not on top. Cover and simmer another 12 to 15 minutes, until a knife slides into a potato with no resistance and the fish flakes easily. Taste the sauce, add a pinch of MSG and more sugar if needed, and serve straight from the pot.





















Leave a Reply