A long oval plate arrives with the soy dressing still moving around the edges. When smoking peanut oil meets the ginger and scallion, the whole plate hisses for a full five seconds. The ginger smells green and sharp, almost like cut grass near a hot pan. That sound and aroma are the cues to watch for.
That is the dish. Cantonese steamed fish, 清蒸鱼, is a home and banquet staple built on three things people get wrong: the fish is not fresh enough, the steaming is timed by weight instead of thickness, and the oil finish is poured too cool. Get those three right and you have one of the cleanest plates of food in any Chinese home kitchen.
| Yield | 2 servings as a main, 4 as part of a meal |
| Prep time | 15 minutes |
| Cook time | 10 minutes |
| Total time | 25 minutes |
| Difficulty | Intermediate |
Reading the fish at the counter
The dish lives or dies here. In Hong Kong you buy the fish swimming. At a Western supermarket you have to read it.
Three tests, in order. The eye should be clear and slightly domed, not sunken or cloudy. Lift the gill flap: bright red-pink means recent, brown means days old. Press the flesh near the dorsal fin and it should spring back within a second. If your thumbprint stays, walk away.
For whole fish, choose a 600–800 g sea bass, grouper, or sand dab when available. From a Western counter, branzino is a close match and is often sold whole at that weight. Black sea bass and red snapper work too. Tilapia is earthier, so use enough ginger to balance the mud note. On a 700 g branzino, brown color under the gill flap means leave it on the ice, even when the eye still looks bright. Trust the gill.
If you can only get fillets, use a thick-cut, skin-on piece of black cod, halibut, or sea bass, 200–250 g per person, at least 2.5 cm thick. Thin fillets overcook before the aromatics have a chance to do their job.
Scoring, salting, and the ginger bed
Rinse the whole fish under cold water and pat it bone-dry inside and out. Wet fish steams to a watery plate.
Score the thickest part of each side with two diagonal slashes about 1 cm deep, stopping at the bone. This is not decoration. It opens the flesh so heat reaches the spine at the same time the thinner belly cooks.
Salt the cavity lightly, about half a teaspoon of kosher salt rubbed inside, nothing on the skin. The skin needs to stay slick so the soy dressing pools and clings later.
Slice 30 g of ginger into coins. Cut 4 scallions into 8 cm lengths and bruise them with the flat of a knife. Lay half the ginger and all the scallion lengths across a heatproof plate in a loose lattice. Set the fish on top. The bed lifts the fish 1 cm off the plate so steam circulates underneath, and it perfumes the flesh as it cooks.
Why the timer runs on thickness, not weight
Thickness affects steaming time, but steamer strength, starting temperature, and the shape of the fish also matter. Begin checking around 8 minutes for a fish roughly 2.5 cm (1 inch) thick. Treat that as a checking time, not a guarantee: the thermometer check in step 4 determines when the fish is ready.
Instructions
-
Set up the steamer. Fill a wok or wide pot with 5 cm of water, set a steaming rack inside, and bring it to a hard rolling boil over high heat. The water must already be screaming before the fish goes in. A cold start steams the fish twice and the flesh turns chalky.

-
Lower the plated fish onto the rack, cover, and set a timer for an initial doneness check. Keep the lid on between checks to retain steam. Open it away from your face and hands when checking the fish.
-
Make the see yau dressing while the fish cooks. In a small pan, warm 60 ml of light soy sauce, 30 ml of water or unsalted chicken stock, 1 teaspoon of rock sugar (or 1 teaspoon of regular sugar), 1 teaspoon of Shaoxing wine, and a pinch of white pepper. Heat just to dissolve the sugar, about 60 seconds at a low simmer. Do not boil. This is see yau, the steamed fish soy: lighter and sweeter than table soy, built to season without overwhelming.
-
Check with an instant-read food thermometer in the thickest flesh, avoiding the backbone. The fish must reach 145°F (63°C), following FDA seafood guidance. Check more than one thick area of a whole fish. If it is below that temperature, cover, steam a little longer, and check again. A chopstick test or the timer alone does not verify the internal temperature.
-
Transfer and drain. Lift the fish on its plate to a tea towel. Tilt and pour off all the cloudy water that collected during steaming. That liquid is bitter and will muddy the dressing. Discard the cooked ginger and scallion under the fish; they have done their job.
-
Top with fresh aromatics. Pile 20 g of fine ginger julienne, the white and pale green of 3 scallions cut into 6 cm threads, and a small handful of cilantro across the fish. Pour the warm see yau around the fish, not over it, so the dressing pools without washing the aromatics off.
-
The sizzling oil finish. Heat 3 tablespoons of peanut or grapeseed oil in a small pan until it just begins to shimmer and a thread of smoke rises, around 200C (390F). Pour it in one steady stream directly over the ginger and scallion threads. They should hiss for 4–5 seconds and the kitchen should smell green and sharp. This step cooks the raw aromatics to the right side of done and emulsifies the soy dressing into something glossy.

Fixes for the four things that usually go wrong
- Muddy dressing after plating: you skipped step 5. Always drain the steaming liquid.
- Overcooked tail, undercooked back: prop the tail end up on a folded piece of foil so the thinner flesh sits higher above the steam. The thick shoulder cooks longer; the tail cooks less.
- Watery plate after pouring: the oil was not hot enough. The pour should hiss audibly across the room. If it only fizzles, the dressing will sit thin and the ginger will taste raw.
- No rock sugar on hand: a teaspoon of regular sugar works. Do not substitute dark soy. It will turn the dressing black and bitter.
- Fillets: skip the scoring and lay the fillet skin-side up on the ginger bed. Begin checking sooner than for a whole fish and use the same 145°F (63°C) thermometer endpoint.
What sits next to it on the table
A Cantonese home table sets steamed fish next to a bowl of properly cooked short-grain rice, a green vegetable stir-fried with garlic (gai lan or choy sum), and a clear soup in the same spirit as a Hanoi pho broth. Nothing else with soy. The fish is the seasoning for the rice.
Keep the oil pour last, after the dressing. Dressing first, aromatics on top, oil over the aromatics. Reverse that order and the ginger sits in cold soy and the whole plate goes flat.