
Shanghai Smoked Fish
“Fried fish steaks plunged hot into a cold sweet-soy bath — the shock builds a lacquer crust. Eaten cold, despite the name there is no smoke.”
The bite
Mahogany steaks that look varnished. The first bite is sweet then deeply soy, the crust still crisp despite hours in the fridge, the flesh inside cool and dense. There is no smoke flavor and no smoking step — Shanghainese cooks insist this is correct. If the surface is soft, the bath was still warm or the second fry skipped.
Where it comes from
A staple of the Shanghai 'cold appetizer' (lěng pán) tradition, especially around Lunar New Year, when families assemble platters of vinegar-jellyfish, drunken chicken, and smoked fish in advance. The 'smoked' name is a borrow from older northern dishes that did smoke fish; the Shanghai version replaced smoke with a hot-into-cold soy plunge sometime in the late Qing or early Republican era as urban kitchens lost wood-fire setups.
What makes it work
The hot-into-cold plunge is the whole trick. A fried crust at 180°C dropped into 20°C syrup contracts hard and pulls the marinade in by capillary action — same physics as a mason jar sealing as it cools. A cold fish into a cold bath only sits on the surface; a hot fish into a hot bath softens the crust. The double-fry exists to give that crust enough rigidity to survive the cold dunk without going soggy.
On the Palate
Ingredients
Serves 4How it's made
6 steps · Show ↓30 min active · 120 min waiting
How it's made
6 steps · Show ↓- 130 min
Cut 600g grass carp middle section into 1.5cm thick crosswise steaks. Marinate with 2 tbsp light soy, 1 tbsp dark soy, 2 tbsp Shaoxing wine, scallion, ginger, white pepper for 30 minutes.
- 210 min
Make the bath: simmer 100ml light soy, 80g rock sugar, 30ml Shaoxing wine, 1 star anise, 1 piece cassia, 2 slices ginger, 100ml water for 8 minutes until syrupy. Cool to room temperature in a wide bowl.
- 38 min
Pat fish dry. Heat oil to 180°C. Fry steaks 4 minutes until deep brown and crisp on the outside, just-cooked through. Skin should crackle when tapped.
- 41 min
Re-fry at 200°C for 30 seconds to crisp the surface harder. Lift out — the steaks should hiss when held above the oil.
- 52 min
Drop the hot steaks straight into the cold bath. Leave them submerged for 2 minutes — the temperature shock pulls glaze deep into the cracks of the crust.
- 6120 min
Lift out, drain on a rack, and chill 2 hours. Serve cold, lacquer-glossy, no extra sauce.