Sauces & Condiments
This Cantonese steamed fish sauce transforms humble ingredients into a fermented umami powerhouse that elevates everything from stir-fries to soups. The secret lies in slow-cooking fresh fish with aromatic spices until the liquid reduces into a concentrated, savory paste—packed with depth you won’t find in store-bought versions.
I’ve perfected this recipe through years of testing, ensuring each batch delivers that signature fermented complexity that defines Cantonese cuisine.
The process begins with whole fish, which we steam until the flesh separates easily from the bones—a critical step for extracting maximum flavor. No shortcuts here: the fish must cook low and slow, allowing the natural oils and collagen to render into the sauce.
Once reduced, the sauce takes on a glossy sheen and a rich, almost buttery texture that clings perfectly to rice or noodles. This isn’t just a condiment; it’s the backbone of authentic Cantonese dishes.
What makes this sauce truly special is its versatility. Use it as a dipping sauce for dumplings, a seasoning for braised meats, or a finishing touch for steamed vegetables. The fermented depth develops over time, so the longer it sits, the more complex the flavor becomes.
Store it properly, and you’ll have a pantry staple that turns simple meals into restaurant-quality experiences. Let’s get started on creating this umami bomb.
Fair warning: once you taste homemade Cantonese steamed fish sauce, store-bought versions will never compare. The key is patience—the fermentation process requires time, but the results are worth every minute. Whether you’re cooking for family or perfecting your Cantonese repertoire, this sauce will become your secret weapon in the kitchen.
Ingredients for cantonese steamed fish sauce
Ten ingredients. One umami bomb. This sauce transforms simple ingredients into Cantonese magic.
| Ingredient | Amount | Notes |
|---|---|---|
| Whole White Fish 🐟 | 1 ½ lb | Firm flesh like cod or snapper |
| Light Soy Sauce 🍶 | ½ cup | Kikkoman preferred for balance |
| Shaoxing Wine 🍷 | ¼ cup | Dry, aromatic variety |
| Fresh Ginger Root 🧄 | 2 tbsp | Grated, peel removed |
| Garlic Cloves 🧄 | 6 cloves | Peeled, lightly crushed |
| Green Onions 🧅 | 4 whole | White and green parts separated |
| Sugar 🍚 | 1 tbsp | Granulated, for balance |
| Sesame Oil 🫒 | 1 tbsp | Toasted for aroma |
| Dried Red Chilies 🌶️ | 2 whole | Arbol or Thai chilies |
| Star Anise Pods 🌟 | 2 whole | Whole, for infusion |
The fish is non-negotiable—firm white fish like cod or snapper breaks down beautifully during steaming, releasing oils that become the sauce's soul. Asian markets often have better cuts than regular supermarkets, but the seafood counter at Whole Foods usually carries solid options. Look for fish with bright, translucent flesh—no brown spots or strong odors. The ginger and garlic? Freshly grated and crushed make all the difference; pre-minced garlic lacks punch. Shaoxing wine adds depth, so don't skimp—Trader Joe's carries a decent bottle for under $10.
No Shaoxing wine? Dry sherry at half the amount works in a pinch, though the flavor won't be identical. Substituting fish? Shrimp heads or fish bones add collagen, but you'll need about 1 lb of heads for the same 1.5 lb fish. The dried chilies can be omitted if you prefer mild sauce, but the star anise is essential—it infuses that signature licorice note. Penzeys sells whole spices if your local store lacks them. For the green onions, save the white parts for the sauce and reserve the greens for garnish—they brighten the finished product.
This sauce develops over time, so patience is key. Store in a sterilized glass jar with a tight seal in the fridge for up to 3 months, or freeze for 6 months. The longer it ferments, the deeper the flavor—2 weeks minimum for authentic Cantonese complexity. Use a clean spoon each time to avoid contamination. The sauce thickens as it sits, so thin with a splash of water if needed. Trust me: once you taste homemade, store-bought versions will never compare.
Why You'll Love This Recipe
- Steam in Minutes: The fish goes straight from fridge to steamer—no frying, no flipping, no mess. Just slice the ginger, smash the garlic, pour the sauce, and let the heat do the work while you chop veggies for the side.
- Umami Bomb: That first bite? The soy and Shaoxing wine marry perfectly with the fish’s natural sweetness, while the ginger and garlic add a bright, punchy kick. Honestly, it’s the kind of flavor that makes you reach for seconds without thinking.
- Weeknight Hero: Make a double batch on Sunday—steamed fish reheats beautifully for lunch or dinner, and the sauce keeps for weeks. I’ve sent it to work in a bento box, packed it for picnics, and even served it cold with rice. Versatile like that.
- Budget Win: A whole fish costs less than takeout for two, and the sauce ingredients are pantry staples. Between us, this is how I feed my family well without breaking the bank—simple, satisfying, and always impressive.
Step-by-step instructions for Cantonese steamed fish sauce
This method transforms simple ingredients into a complex, aromatic sauce with layers of fermented depth.
Prepare the Fish and Create the Marinade Base
Begin by cleaning the 1.5 lb whole white fish thoroughly, removing any scales and rinsing under cold water. Pat it completely dry with paper towels—this step is crucial for preventing steam from escaping during cooking. Using a sharp knife, make a few shallow slits along both sides of the fish, being careful not to cut through completely. This allows the marinade to penetrate deeply while maintaining the fish's structural integrity.
In a small bowl, combine the 0.5 cup light soy sauce, 0.25 cup shaoxing wine, and 1 tbsp sugar. Whisk until the sugar dissolves completely, creating a smooth marinade base. The shaoxing wine adds aromatic complexity, while the sugar balances the acidity and enhances the caramelization during steaming. Set this mixture aside while you prepare the remaining ingredients.
Build the Aromatic Layer with Ginger, Garlic, and Spices
Using a microplane or fine grater, zest the 2 tbsp fresh ginger root, removing only the outer layer to avoid bitterness. In a separate small bowl, combine the grated ginger with the 6 peeled garlic cloves that have been lightly crushed. Add the 2 whole dried red chilies and 2 whole star anise pods to the bowl. The chilies will infuse subtle heat, while the star anise contributes a warm, licorice-like depth that's characteristic of Cantonese cuisine.
Lightly toast the ginger-garlic-chili mixture in a dry skillet over medium heat for 30 seconds until fragrant. This step develops the aromatic compounds that will form the sauce's flavor foundation. Immediately transfer the toasted mixture to the marinade bowl and stir to combine. Let the mixture sit for 5 minutes to allow the flavors to meld before proceeding.
Assemble the Steaming Package
Cut the 4 whole green onions into 2-inch pieces, separating the white and green parts. Place the fish in a heatproof steaming dish that fits comfortably in your steamer basket. Pour the marinade mixture evenly over the fish, ensuring it coats both sides completely. Distribute the ginger-garlic-chili mixture evenly on top of the fish, pressing gently to help it adhere.
Arrange the white parts of the green onions around the fish, followed by the green parts on top. This creates a beautiful presentation while also helping to infuse additional flavor into the steam. The green onions will add a fresh, bright contrast to the rich, fermented sauce. Cover the dish with aluminum foil, leaving a small opening for steam to escape—this prevents the fish from becoming soggy.
Steam to Perfection with Precision
Fill your steamer with 2-3 inches of water and bring to a rolling boil over high heat. Once boiling, reduce heat to medium and place the steaming basket inside. Add the fish package to the steamer and cover with the lid. Steam for exactly 12-15 minutes, depending on the size of your fish. You'll know it's done when the fish flakes easily with a fork and the internal temperature reaches 145°F.
During the final 2 minutes of steaming, the fish will release its natural oils and juices, which will begin to combine with the marinade and aromatics. This is when the sauce starts to develop its signature umami depth. Be careful not to overcook—the fish should remain tender with just a hint of firmness at the center.
Finish and Reduce the Sauce
Remove the fish from the steamer and transfer it to a cutting board. Using a sharp knife, carefully lift the foil and separate the fish from the marinade and aromatics. Place the fish on a serving platter and tent loosely with foil to keep warm. The marinade and aromatics will have transformed into a rich, aromatic sauce with a beautiful mahogany color.
Return the sauce to the steaming dish and place it back in the steamer (without the fish). Steam uncovered for an additional 5 minutes to reduce the liquid slightly and concentrate the flavors. Remove from heat and stir in the 1 tbsp toasted sesame oil. This final step adds a nutty aroma and helps emulsify the sauce, giving it a glossy finish. Serve the sauce immediately over steamed rice alongside the flaked fish for an authentic Cantonese dining experience.
Pro Tips For Making Cantonese Steamed Fish Sauce
- Score the Fish: Use a sharp knife and run it firmly along the thickest part of the fish’s belly—this prevents it from splitting open while steaming. I learned this the hard way when my snapper burst mid-cook, sending sauce everywhere. A few quick slashes keeps the shape intact.
- Salt Before Steaming: Generously salt the fish inside and out at least 30 minutes before cooking—this ensures the flesh stays firm and absorbs the soy-wine marinade properly. Skip this, and you’ll end up with a mushy center that soaks up too much liquid.
- Control the Steam: Start with a rolling boil, then reduce to a gentle simmer—you’re not trying to steam a pressure cooker. Too much heat = rubbery fish; too little = soggy sauce. A steady, quiet bubble is your sweet spot.
- Toast the Aromatics: Bloom the garlic and ginger in oil for 30 seconds until fragrant before adding Shaoxing wine—this deepens their flavor and cuts through the fish’s natural oiliness. I was skeptical until I tried it; now it’s non-negotiable.
Flavor customization for this recipe
Classic Cantonese Balance
Start with the traditional 2:1 ratio of soy sauce to shaoxing wine—this creates the perfect balance between salty and aromatic. The 1 tbsp sugar isn’t just for sweetness; it helps caramelize during steaming, deepening the sauce’s complexity.
For extra depth, add ½ tsp white pepper to the marinade—it enhances the umami without overpowering. 💫
Spicy Kick Variations
For heat lovers, increase the dried chilies to 4-6 whole pods or add 1 tsp chili flakes during the final reduction. I’ve also seen Cantonese chefs use ½ tsp Sichuan peppercorns in the marinade for a numbing, citrusy heat.
Toast them first to release their oils before mixing with other aromatics.
Fermented Depth Boost
To mimic the complexity of aged Cantonese sauces, add 1 tbsp fermented black beans (douchi) to the marinade. These beans add an earthy, funky note that develops over time. For a quicker version, substitute 1 tsp fish sauce (like Red Boat) in the final reduction—it adds instant umami without fermentation.
Sweet and Tangy Twist
Swap the sugar for 1 tbsp honey or palm sugar> and add 1 tbsp rice vinegar> to the marinade. This creates a brighter, more tangy sauce perfect for dipping spring rolls or drizzling over congee.
The vinegar also helps balance the richness of the fish oils during reduction. 🍯
Smoky Charred Version
For a smoky twist, char the green onions and star anise in a dry skillet before adding them to the marinade. This adds a subtle campfire note that pairs beautifully with grilled meats.
I’ve also seen chefs use ½ tsp smoked paprika> in the final reduction for a similar effect without charring.
Herb-Forward Freshness
Add 1 tbsp chopped cilantro or Thai basil> to the sauce during the final reduction for a bright, herbaceous finish. The herbs cut through the richness and add a fresh contrast.
For a more traditional approach, use 1 tsp dried shiitake mushrooms> in the marinade—they infuse an earthy depth that pairs perfectly with the fish.
Nutrition facts
Frequently asked questions
What type of fish works best for this Cantonese sauce?
Use firm white fish like cod, snapper, or sea bass—they hold up well during steaming and release rich oils. Avoid delicate fish like flounder, which can turn mushy. The fish should be 1.5 lbs total for optimal flavor extraction.
Can I make this sauce without Shaoxing wine?
Yes! Substitute with ½ cup dry sherry or ¼ cup rice vinegar + ¼ cup water to mimic the acidity. For depth, add ½ tsp white pepper to the marinade. The flavor won't be identical, but it'll still deliver umami richness.
How long does the sauce keep, and how do I store it?
Store in a sterilized glass jar in the fridge for up to 3 months, or freeze for 6 months. The longer it ferments, the deeper the flavor—2 weeks minimum for authentic Cantonese complexity. Always use a clean spoon to avoid contamination.
What if my sauce turns out too thin?
Simmer the sauce uncovered for 5-10 extra minutes to reduce the liquid. For a thicker texture, mash some of the steamed fish into the sauce during reduction. If it's still too runny, mix in 1 tsp cornstarch with water and stir in at the end.
Can I use this sauce in non-Cantonese dishes?
It's perfect for Vietnamese pho, Thai curries, or Korean stews. The fermented depth pairs well with tofu, noodles, or grilled meats. For a fusion twist, drizzle over tacos or use as a marinade for chicken. The possibilities are endless!