Steamed fish is the dish where Chinese home cooking makes its strongest argument against the Western instinct to fry, roast, or sauce a piece of fish into submission. Eight minutes over rolling steam, a handful of scallions and ginger, a thin pour of hot oil, and a quick soy dressing. That is the entire trick. Yet most home cooks I have talked to produce something gray, watery, and bland on their first try, then quietly retire the recipe. The gap between the restaurant version and the home version is almost never the recipe. It is three small decisions: which fish, how dry it goes into the steamer, and whether you dump the cloudy liquid before dressing.
I want to walk you through those decisions, and a few the standard recipes leave out. This is a Cantonese preparation at its core, which means the seasoning stays quiet so the fish can speak. I have added a Sichuan-leaning hot-oil step because, frankly, a faint hum of chili and numbing pepper makes the dish more interesting without burying the fish. If you want the pure Cantonese version, skip that one pour. Everything else holds.
Steam a 400 g (14 oz) whole fish for eight minutes over a full, rolling boil, then check the thickest part. Continue until the flesh is opaque and separates easily from the bone, or reaches 63°C (145°F). Pat the fish dry first, discard the cloudy cooking liquid, then finish with 180°C (356°F) shimmering oil that is hot but not smoking and a warmed soy dressing.
Why this dish rewards a quiet hand
The Cantonese have a phrase, qing zheng, that translates loosely to "clear steaming." The word "clear" is doing the work. It means nothing in the way: no dark soy, no chili paste, no cornstarch cloak. You are tasting the fish, the aromatics, and the soy dressing, and each one has to be right because there is nowhere to hide.
This is also why the dish is famously unforgiving. A fish that is even slightly past its prime will taste muddy when steamed. The same fish, treated to a heavy braise or a sweet-and-sour sauce, would pass without comment. So the first rule is honest: save steaming for fish you would happily eat raw, and send the merely-decent fish to other preparations. A heavily sauced dish like Sichuan boiled fish or a crisp sweet and sour fish forgives a freezer-history that steaming will not.
Picking the fish
You want a small, whole fish, gutted and descaled, head and tail on. Around 400 g (14 oz) per fish is the sweet spot. Anything larger and the outside overcooks before the center sets; anything smaller and you are fighting the bones more than eating.
Good options, in rough order of how often I reach for them:
- Sea bass (European bass). My default. Delicate flake, clean flavor, widely available.
- Sea bream (dorade). Slightly firmer than bass, holds its shape well on the plate.
- Grouper. The Cantonese restaurant favorite. Meaty, sweet, expensive. Worth it if you find it fresh.
- Grass carp or perch. Traditional, slightly earthier. Best from an Asian market with live tanks.
- Rainbow trout. Not a classic choice, but the flavor steams beautifully and it is easy to find fresh in the US.
- Flounder or sole. Flatfish cook in a flash and are very tender; reduce the time by a minute or two.
Fillets work too, if a whole fish is not on the table. A thick, skinless cod fillet is excellent steamed this way and needs only about five to six minutes depending on thickness. The scallion ginger salmon approach borrows the same dressing logic for a pan-seared fillet, and pan-fried belt fish covers the drier, meatier fish that do better in a pan than a steamer.
One thing I will not budge on: freshness. Smell the fish. It should smell like clean water and almost nothing else. If there is any sharp, ammoniac, or "fishy" note, walk away. Frozen-and-thawed fish is fine for a chili-braised suan cai yu where the broth carries the flavor. It will embarrass you steamed.
Ingredients
Ingredients at a glance

Serves two as a main, or four as one course of a larger meal.
| Ingredient | Amount | Notes / substitute |
|---|---|---|
| Whole fish, gutted & descaled | 1, about 400 g (14 oz) | Sea bass, sea bream, grouper, perch, or trout. Keep head and tail on. |
| Scallions | 2 stalks | Cut into fine julienne. Soak in cold water 10 min to curl them for garnish. |
| Ginger | 1 thumb (about 20 g) | Julienne; peel if the skin is tough. |
| Neutral cooking oil | 1½ tbsp (22 ml) | Peanut, canola, sunflower, or grapeseed. Avoid olive oil. |
| Dried red chili | 1, slit and seeded | Optional. Omit for the pure Cantonese version. |
| Whole Sichuan peppercorns | 1 pinch (about 10) | Optional. Adds a faint tingle; see the Sichuan pepper guide for sourcing. |
| Light soy sauce | 3 tbsp (45 ml) | Use light or regular, never dark. Light vs. dark matters here; see the soy sauce guide. |
| Shaoxing rice wine | 1 tbsp (15 ml) | Sub dry sherry or sake. Omit for alcohol-free. |
| Sugar | ½ tsp | Rounds the salt of the soy. Shaoxing wine already adds depth, so do not overdo the sugar. |
| Ground white pepper | 1 pinch | White, not black; black reads as coarse here. |
| Steamed white rice | To serve | Jasmine is traditional; here is a reliable stovetop jasmine rice method. |
Setting up the steamer
You do not need fancy equipment. A wide wok, a small heatproof bowl or a wire steamer rack, a plate that holds the fish and fits inside the wok with the lid closed, and a tight lid. If your kitchen runs on bamboo steamers, the bamboo steamer guide walks through sizing and care; just know that most home bamboo stacks are too small for a whole fish laid flat.
If the fish is longer than any plate that fits your steamer, cut it in two on a steep diagonal and steam the pieces side by side, then reassemble them on the serving plate. The join will be invisible under the scallions and sauce.
The method, step by step
- Score the fish. Rinse the fish inside and out, then pat it completely dry with paper towels, including the cavity. Cut three or four diagonal slashes through the thickest part of each side, down to (but not through) the bone. These slashes are why a 400 g fish cooks evenly in eight minutes instead of fifteen; without them the belly overcooks while the back stays raw.
- Dress with aromatics. Tuck about a third of the scallion and ginger julienne into the cavity. Scatter the rest underneath and over the fish. The aromatics under the fish lift it slightly so steam circulates, and the ones on top perfume the flesh as it cooks.
- Bring the steamer to a full boil first. Put water in the wok below the level of the rack, cover, and bring it to a hard, rolling boil before the fish goes in. Starting the fish over already-raging steam means the clock is accurate and the surface sets fast, which keeps juices inside instead of weeping into the plate.

Bring the water to a hard rolling boil below the rack before the fish plate goes in
- Steam eight minutes over high heat, then check. Set the plate on the rack, cover, and keep the heat on high. Start a timer the moment the lid goes on. For a 500 to 600 g (18 to 21 oz) fish, two extra minutes is a useful starting estimate, but thickness and equipment matter more than weight alone. Resist unnecessary peeking because each lift drops the temperature.
- Test for safe doneness. At eight minutes, check the thickest part of the back. The flesh should be opaque and separate easily from the bone or with a fork; where practical, a food thermometer should read 63°C (145°F). If it has not reached that point, cover and steam briefly before checking again. Do not rely on carryover heat to finish a translucent center.

At eight minutes, check the thickest back and continue as needed until the flesh is opaque and parts cleanly from the bone, or reaches 63°C / 145°F
- Pour off every drop of the cloudy liquid. This is the step most recipes mention in passing and most cooks skip. The pooling liquid is mostly condensed steam, fish protein, and the cooked-out aromatics, and it tastes muddy and bitter. Tilt the plate and drain it fully into the sink, and carefully lift the fish to get what pooled underneath. The clean dressing that follows will thank you.

Brace the fish and pour off every drop of cloudy steaming liquid before adding fresh aromatics
- Heat the oil until fluid and shimmering, not smoking. In a small pan over medium-low heat, warm the oil with the dried chili and Sichuan peppercorns to about 180°C (356°F), then pour it straight over the scallions and ginger on the fish. It should sizzle immediately without scorching the spices. If the oil smokes, turn off the burner and let it cool before continuing. Strain out the spent chili and peppercorns, or leave them on for anyone who wants the kick.

Heat the oil to about 180°C, fluid and shimmering but not smoking, then pour it over fresh scallion and ginger; if it smokes, turn off the burner and let it cool
- Warm the dressing and pour it over. In the same pan, off the heat for a moment, combine the soy sauce, rice wine, sugar, and white pepper. Return to low heat just until it bubbles at the edges, then pour it around and over the fish. Heating the dressing briefly takes the raw edge off the soy and lets the sugar melt; pouring cold soy over hot fish is the difference between a finished dish and a dressed one.

Warm the dressing to tiny edge bubbles, then pour it around the fish instead of over the aromatics
- Serve immediately, with rice. The texture is at its peak for about three minutes after the dressing goes on. Encourage everyone to drag each bite of fish through the sauce pooled on the plate; that sauce is the whole point.
Safety check: FoodSafety.gov recommends cooking fish to 63°C (145°F), or until the flesh is no longer translucent and separates easily with a fork. The U.S. Fire Administration advises turning off the burner if cooking oil starts to smoke.
When it goes wrong
I have ruined this dish more ways than I want to admit. Here are the failures I see most often, and what to do about them.
- The flesh is tough and dry, especially near the tail. Overcooked. Next time, treat eight minutes as the first check rather than a universal endpoint. Remove the fish when the thickest flesh is opaque and separates easily from the bone, or reaches 63°C (145°F).
- The fish tastes fishy, not clean. Two usual suspects. Either the fish was not fresh enough for steaming, or it went into the steamer wet. A wet surface dilutes into the steam and carries odor back into the flesh. Pat dry obsessively, cavity included.
- The sauce is thin, gray, and bitter. You did not drain the cloudy cooking liquid. Do it fully, even if it means lifting the fish with a spatula to reach the pool underneath.
- The scallions stayed raw and sharp. The oil was not hot enough when you poured it. Bring fresh oil to about 180°C (356°F), fluid and shimmering but not smoking, and pour it immediately over the aromatics.
- The soy dressing tastes flat or one-note salty. It needs the sugar and the wine. The ½ teaspoon of sugar is not making it sweet; it is rounding the harsh edge of the salt. If you skipped the wine for an alcohol-free version, add a few drops of rice vinegar instead to give the dressing lift.
- The belly split open and the fish looks ragged. Either the slashes were cut too deep, or the fish was past its prime and the belly wall had softened. Shallow slashes, fresh fish.
- The center is still translucent at eight minutes. Your fish may be thicker, the boil may have slowed, or the lid may have been lifted. Cover and continue steaming briefly, then recheck until the flesh is opaque and separates easily or the center reaches 63°C (145°F).
Variations and what to serve alongside
Once the technique is yours, the dressing is the part to play with. A few directions worth taking:
- Split scallion-and-ginger oil. For a brighter, more aromatic version, double the scallion whites and ginger in the hot-oil pour and skip the chili and Sichuan pepper entirely. This is the pure Cantonese lane.
- Black bean and garlic. Add a teaspoon of fermented black beans, mashed with a little garlic, to the dressing as it warms. It turns the dish toward the dim-sum flavor family.
- Pickled chili (duo jiao) crown. Spoon a couple of tablespoons of chopped pickled chilies over the fish for the last two minutes of steaming. Hunan in spirit, and a great use for a jar of homemade pickled chili.
- A drizzle of chili oil at the table. For heat lovers, a teaspoon of homemade chili oil over each portion, after the soy dressing, adds a different kind of warmth than the Sichuan pepper pour.
This is a centerpiece protein, so build the rest of the meal around it rather than competing. Steamed white rice is non-negotiable; the sauce needs somewhere to go. Add a quick vegetable, like a stir-fried green or a smashed cucumber salad, and a light soup, and you have a complete meal in the Cantonese idiom. If you want a second protein for a larger table, a cleaner dish like kung pao shrimp or steamed garlic prawns sits next to the fish without crowding it.
Storage and reheating
Steamed fish is a cook-and-eat dish. If you must hold leftovers, refrigerate the fish and its sauce separately, covered, for up to one day. Reheat gently, covered, in a steamer for two to three minutes, or in a low oven, just until warm; never microwave, which turns the texture cottony. Honestly, leftover steamed fish is best eaten cold, lifted off the bone and folded into congee the next morning.
Questions I get asked
A few things that come up again and again when readers try this one.
Can I use frozen fish? I would not, for steaming. Freezing damages the cell structure and the texture goes soft and weepy. Send frozen fillets to a braised or sauced dish instead, where the sauce does the heavy lifting.
Do I have to score the fish? It is what lets a thick fish cook through before the thin parts dry out. If your fish is thin or a flat fillet, you can skip it, but for any whole round fish, score it.
Why pour off the liquid and then add more sauce? They are not the same thing. The cooking liquid is bitter protein water; the dressing is seasoned soy. Mixing the two gives you a muddy, oversalted sauce. Drain the first, then pour the second.
What if I do not own a wok? Any wide pot with a tight lid and a rack that fits inside works. A Dutch oven with a small trivet or an inverted heatproof bowl does the job.
Is the chili-and-Sichuan-pepper oil traditional? No. Pure Cantonese steamed fish commonly uses plain hot oil over the aromatics. This version adds chili and Sichuan pepper as a personal preference; either way, 180°C (356°F) shimmering oil is hot enough and should not smoke.
That is the whole dish. The recipe is short on purpose; the work is in the timing, the dryness of the fish, and the discipline to drain that cloudy liquid every single time. Get those three right and the rest takes care of itself. Steam it the same day you buy the fish, pour the dressing while everything is still hot, and serve it the moment it reaches the table. The first bite, with the flesh dragged through the sauce, is the reason this dish has survived unchanged for as long as it has.



