Quick Recipe Version (TL;DR)
Quick Ingredients
- 1 whole red snapper (1.25–1.75 lb), scaled/gutted, or 4 skin-on fillets (5–6 oz each)
- 6 scallions, divided (whites for steaming, greens for topping)
- 2-inch piece fresh ginger, peeled and julienned (about 1/2 cup)
- 2 garlic cloves, thinly sliced (optional)
- 1 small red chili, thinly sliced (optional)
- 3 tbsp light soy sauce, 1 tbsp Shaoxing wine (or dry sherry), 1 tsp sugar, 2 tbsp water, 1/2 tsp sesame oil, pinch white pepper
- 1/3 cup neutral oil (peanut/canola) for sizzling
- 1 1/2 cups jasmine rice + 1 7/8 cups water, pinch salt
Do This
- 1. Rinse rice until water runs mostly clear; cook with water and salt (15 minutes simmer + 10 minutes covered rest).
- 2. Julienne scallions and ginger; mix soy, wine, sugar, water, sesame oil, white pepper.
- 3. Pat fish dry; score whole fish 3 times per side. Arrange scallion whites, half the ginger, and garlic on a heatproof plate; place fish on top, scatter remaining ginger.
- 4. Steam over rapidly boiling water, covered: 12–15 minutes for a 1.5 lb whole fish or 5–8 minutes for 3/4–1 inch-thick fillets.
- 5. Heat 1/3 cup oil to 375°F (190°C) while fish steams.
- 6. Drain excess steaming liquid, pour soy–wine sauce around fish, mound with scallion greens/chili, then carefully pour hot oil over to sizzle.
- 7. Spoon sauce over fish and serve immediately with jasmine rice.
Why You’ll Love This Recipe
- Clean, aromatic flavors: ginger and scallion perfume tender, ultra-juicy fish.
- Fast weeknight-friendly: 35 minutes, start to finish.
- Restaurant-style finish: hot oil bloom releases big scallion aroma at the table.
- Flexible: make it with a whole snapper for drama or fillets for convenience.
Grocery List
- Produce: Scallions, fresh ginger, garlic (optional), red chili (optional), cilantro (optional), limes (optional)
- Dairy: None
- Pantry: Light soy sauce, Shaoxing wine (or dry sherry), sesame oil, neutral oil (peanut/canola/grapeseed), jasmine rice, sugar, white pepper, kosher salt
Full Ingredients
Fish and Aromatics
- 1 whole red snapper, 1.25–1.75 lb (570–790 g), scaled and gutted, patted dry, or 4 skin-on snapper fillets (5–6 oz/140–170 g each)
- 6 scallions, trimmed; whites and greens separated, cut into 3-inch (7.5 cm) matchsticks
- 2-inch (5 cm) piece fresh ginger, peeled and julienned (about 1/2 cup/50 g)
- 2 garlic cloves, thinly sliced (optional)
- 1 small red chili, thinly sliced (optional, for heat and color)
- Kosher salt, for lightly seasoning the fish
Soy–Wine Sauce
- 3 tbsp light soy sauce
- 1 tbsp Shaoxing wine (or dry sherry)
- 1 tsp sugar
- 2 tbsp water (or reserved steaming liquid, see steps)
- 1/2 tsp toasted sesame oil
- Pinch ground white pepper
Hot Oil Finish
- 1/3 cup (80 ml) neutral oil (peanut, canola, or grapeseed)
Jasmine Rice
- 1 1/2 cups jasmine rice
- 1 7/8 cups water (450 ml)
- Pinch kosher salt
Garnish & Serving
- Fresh cilantro leaves (optional)
- Lime wedges (optional)

Step-by-Step Instructions
Step 1: Rinse and cook the jasmine rice
Place 1 1/2 cups jasmine rice in a fine-mesh strainer and rinse under cold water, swishing, until the water runs mostly clear (about 30–60 seconds). Combine rinsed rice, 1 7/8 cups water, and a pinch of salt in a small pot. Bring to a boil, reduce to a gentle simmer, cover, and cook for 15 minutes. Turn off the heat and let stand, covered, for 10 minutes to finish steaming. Fluff just before serving.
Step 2: Prep aromatics and mix the sauce
Separate scallion whites and greens; cut both into 3-inch matchsticks. Julienne the ginger. Thinly slice garlic and chili if using. In a small bowl, whisk together light soy sauce, Shaoxing wine, sugar, water, sesame oil, and white pepper until sugar dissolves. Set aside.
Step 3: Prepare the fish and steaming plate
Pat the fish very dry. For a whole snapper, make 3 shallow diagonal cuts on each side (about 1/2 inch deep). Lightly season fish with a small pinch of salt. On a heatproof plate that fits in your steamer, scatter the scallion whites, half the ginger, and the garlic. Lay the fish on top and scatter the remaining ginger over the fish. If using fillets, place them skin-side up (skin on) or presentation side up.
Step 4: Set up and steam
Fill a wok or wide pot with 1–1 1/2 inches of water and bring to a vigorous boil over high heat. Set a steamer rack inside and place the plate with the fish on the rack. Cover tightly. Steam until the fish is just cooked through: 12–15 minutes for a 1.25–1.75 lb whole snapper, or 5–8 minutes for 3/4–1 inch-thick fillets. The flesh should be opaque and flake easily, or read 130–135°F (54–57°C) at the thickest part (cook to 145°F/63°C if you prefer well-done). Turn off heat.
Step 5: Heat the sizzling oil
While the fish steams, heat 1/3 cup neutral oil in a small saucepan over medium-high heat to 375°F (190°C). If you do not have a thermometer, a test scallion thread should sizzle vigorously on contact. Keep the oil hot but not smoking, and remove from heat if it approaches its smoke point.
Step 6: Sauce, mound scallions, and pour the hot oil
Carefully remove the fish plate from the steamer. Tip off and discard any watery liquid on the plate, leaving about 2 tablespoons to loosen the sauce. Pour the soy–wine sauce around and over the fish. Mound the scallion greens (and chili, if using) across the top in a generous layer. Slowly and carefully drizzle the hot oil over the scallions and ginger; it should sizzle and release a fragrant bloom. Spoon some of the now-aromatic sauce over the fish.
Step 7: Plate and serve with jasmine rice
Garnish with cilantro and add lime wedges if you like a bright finish. Serve immediately with hot jasmine rice, spooning plenty of the soy–ginger–scallion sauce over each portion.
Pro Tips
- Steam power matters: keep the water at a hard boil before and during steaming for even cooking.
- Time by thickness: plan about 10 minutes per inch (2.5 cm) of thickness at the thickest point; start checking early.
- Plate choice: use a plate with a slight rim to catch flavorful juices; a thin metal or porcelain plate heats quickly and steams evenly.
- Hot oil safety: use a small saucepan with a spout and pour slowly from low height. Keep kids and pets clear.
- Season to taste: if your soy is very salty, swap the 2 tbsp water in the sauce for 2 tbsp of the reserved steaming liquid to balance salinity and add depth.
Variations
- Black bean ginger: add 1 tablespoon rinsed, mashed fermented black beans to the aromatics under the fish for savory depth.
- Citrus-sesame: finish the sauce with 1 tablespoon fresh lime juice and 1 additional teaspoon toasted sesame oil for a bright, nutty edge.
- Different fish: use sea bass, branzino, trout, or halibut fillets; adjust steaming time to thickness.
Storage & Make-Ahead
Best enjoyed immediately after the hot oil pour. You can prep scallions and ginger up to 24 hours ahead (store in cold water and dry well before use). Mix the sauce up to 3 days ahead and refrigerate. Leftover cooked fish keeps 1 day in an airtight container; reheat gently covered in the microwave (45–60 seconds) or steam briefly to avoid drying. Cooked jasmine rice keeps 4 days refrigerated; reheat covered with a splash of water.
Nutrition (per serving)
Approximate values with rice: 560 kcal; 33 g protein; 18 g fat; 66 g carbohydrates; 1 g fiber; 2 g sugar; 1,100–1,300 mg sodium (varies with soy sauce). Values are estimates.


Leave a Reply