Steamed fish with ginger and shallots is a classic Cantonese dish that highlights the delicate flavor of fresh fish, enriched with aromatic ginger, sweet shallots, and a savory soy-based sauce. The gentle steaming method keeps the fish moist and tender, while the hot oil poured over the aromatics releases their fragrance and adds a silky finish. This simple yet elegant recipe is perfect for a weeknight dinner or a special occasion, delivering restaurant-quality results at home.
Ingredients
- 1 whole fish (about 1.5 lb / 680 g), such as sea bass, snapper, or trout, cleaned and scaled (or 4 fillets, about 6 oz / 170 g each)
- 1 teaspoon kosher salt
- 2 tablespoons Shaoxing wine (or dry sherry)
- 2-inch piece fresh ginger (about 20 g), peeled and cut into thin julienne strips
- 3 shallots (about 60 g), thinly sliced
- 2 scallions (green onions), white and green parts separated, cut into 2-inch pieces and then into thin strips
- 2 tablespoons soy sauce (or tamari for gluten-free)
- 1 tablespoon oyster sauce (optional; use vegetarian stir-fry sauce for a plant-based version)
- 1 teaspoon sugar
- 2 tablespoons neutral oil (such as canola or grapeseed)
- Fresh cilantro sprigs, for garnish (optional)
Instructions
- Pat the fish dry with paper towels. If using a whole fish, score both sides diagonally with a sharp knife, making cuts about 1 inch apart. Rub the fish inside and out with salt, then drizzle with Shaoxing wine. Place on a plate and set aside for 10 minutes while you prepare the aromatics.
- In a small bowl, mix the soy sauce, oyster sauce (if using), and sugar with 2 tablespoons of water. Set aside.
- Place a steamer rack in a wok or large pot, add about 2 inches of water, and bring to a boil over high heat.
- Transfer the fish to a heatproof dish that fits inside the steamer. Scatter half of the ginger, half of the shallots, and the white parts of the scallions over and around the fish.
- Place the dish on the steamer rack, cover, and steam over high heat. For a whole fish, steam for 8–10 minutes, or until the flesh flakes easily and the internal temperature reaches 145°F (63°C) (USDA FSIS safe minimum for fish). For fillets, steam for 5–7 minutes, checking early.
- Carefully remove the dish from the steamer (use oven mitts). Discard the cooked ginger, shallots, and scallion whites. Pour off any accumulated liquid from the dish.
- Drizzle the soy sauce mixture over the fish. Top with the remaining raw ginger, shallots, and green scallion strips.
- Heat the neutral oil in a small saucepan over high heat until shimmering and just smoking (about 1 minute). Immediately pour the hot oil evenly over the aromatics—they will sizzle and release their fragrance.
- Garnish with cilantro if desired, and serve immediately.
Tips
- Choose the right fish: Firm white fish like sea bass, snapper, or grouper hold up best to steaming. If using fillets, keep the skin on to help them stay intact.
- Don’t over-steam: Fish continues to cook after steaming, so pull it off the heat just when it flakes at the thickest part. Overcooked fish becomes dry and rubbery.
- Hot oil is key: The oil must be very hot (just smoking) to sizzle and perfume the aromatics. If it’s not hot enough, the ginger and shallots will just wilt.
- Make it ahead: You can prep the ginger, shallots, and scallions up to a day in advance and keep them in an airtight container in the fridge.
Serving Suggestions
Serve the steamed fish with steamed jasmine rice and a side of stir-fried bok choy or Chinese broccoli (gai lan). The sauce is delicious spooned over the rice. For a complete Cantonese-style meal, pair with a simple soup like egg drop or hot and sour.
Variations
- Spicy version: Add 1–2 thinly sliced red chilies (or 1 teaspoon chili crisp) along with the aromatics before pouring the hot oil.
- Citrus twist: Replace the Shaoxing wine with fresh lime juice and add lime zest to the sauce for a bright, Southeast Asian flavor.
- Vegetarian option: Substitute the fish with firm tofu slices or a large portobello mushroom cap, and use vegetarian stir-fry sauce instead of oyster sauce. Steam tofu for 5 minutes, mushroom for 8–10 minutes.
- Herb infusion: Add a few sprigs of cilantro or Thai basil to the steaming dish for extra aroma.
Storage and Reheating
Refrigerate leftovers in an airtight container within 2 hours of cooking. The fish will keep for up to 3 days. To reheat, place the fish in a steamer over boiling water for 3–4 minutes, or microwave in 30-second bursts until just heated through. Be careful not to overheat, as the fish will dry out. The sauce may thicken; add a splash of water before reheating to loosen it.
Frequently Asked Questions
Can I use frozen fish? Yes, but thaw it completely in the refrigerator overnight. Pat it very dry before seasoning, as excess moisture will make the sauce watery.
What if I don’t have a steamer? You can use a large pot with a metal colander or a heatproof plate set on a small inverted bowl. Just make sure the water doesn’t touch the plate.
Can I skip the Shaoxing wine? Yes, substitute with dry sherry or mirin. If you prefer no alcohol, use an equal amount of chicken or vegetable broth.
Why did my fish turn out rubbery? It was likely overcooked. Check the internal temperature with a thermometer—it should reach 145°F (63°C) but not exceed it. Also, ensure the water is at a rolling boil before adding the fish.
Is it safe to eat the fish if it’s slightly undercooked? No, fish must reach 145°F (63°C) to be safe. If you prefer a more delicate texture, you can cook to 140°F (60°C) and let it rest for 3 minutes, but always use a thermometer to verify.
Can I make this dish with other types of fish? Absolutely. Salmon, cod, or halibut work well, but adjust steaming times accordingly—thicker cuts need a few extra minutes.
Related
- Cranberry Custard Tart: A NYT-Inspired Holiday Tart
- Potato Dill Bread Recipe (Soft & Fluffy)
- Potato Bread vs Brioche: Key Differences
More recipes to cook
Safety notes: safe minimum internal temperatures from USDA FSIS; raw and undercooked fish guidance from the U.S. FDA. Food safety notes
Spotted an error? Tell us and we will correct it (corrections policy).