There are spicy dishes, and then there are Hunan spicy dishes.

While Sichuan numbs your mouth with peppercorns, Hunan hits you with something sharper: the bright, tangy, fiery kick of pickled chilies.

Pickled Chili Fish—known as Duò Jiāo Yú in Mandarin—is the dish that put Hunan cuisine on the map . Traditionally made with a massive fish head (Duò Jiāo Yú Tóu), this recipe adapts beautifully to a whole fish or even fillets, making it accessible for any home cook .

The magic happens when you steam fresh fish under a blanket of fermented chopped red chilies, ginger, garlic, and fermented black beans. The heat transforms the chilies' raw spice into something complex—sour, savory, and deeply aromatic—while the fish stays impossibly tender and flaky .

The first time I made this, I lifted the steamer lid and was floored by the aroma. It's the smell of a bustling Hunan night market: smoky chili oil, pungent garlic, and the sweet promise of perfectly cooked fish. One bite, and you'll understand why this dish is legendary.


What Are Pickled Chilies (剁椒)?

Before we cook, let's talk about the star ingredient.

Duò jiāo (剁椒) are roughly chopped red chilies that have been fermented in a salt brine—not vinegar. This lactic acid fermentation gives them a unique sour-spicy flavor that fresh chilies simply cannot replicate .

They're saltier than they are spicy, with a deep, funky umami that wakes up everything it touches. You'll find them in jars at any Asian grocery store, usually labeled "chopped pickled chilies" or "duo jiao." The Tantan Xiang (坛坛香) brand is widely recommended by Chinese home cooks .

Can't find pickled chilies? You can make your own! Ferment chopped red chilies with 10% salt, garlic, ginger, and a splash of Shaoxing wine for 2-3 weeks .


Why This Recipe Works

ElementWhy It Matters
Pickled red chilies (剁椒)The soul of the dish—sour, salty, and spicy with deep fermented umami
Fresh whole fishSteams up tender and sweet, perfectly balanced by the bold chili topping
Fermented black beans (douchi)Adds an extra layer of savory complexity; a signature Hunan touch
Tofu baseAbsorbs the spicy juices and becomes a second star of the dish
Hot oil finishSizzling oil poured over green onions releases aromatics and adds gloss

The genius of this dish lies in steaming. Unlike stir-frying, steaming gently cooks the fish while allowing the pickled chili topping to infuse every bite with flavor. The resulting juices mix with soy sauce and vinegar to create a soup that's practically begging to be spooned over rice—or mixed with noodles .


Ingredients

Serves 3-4

The Fish

1 whole fish (1 to 1.5 lb / 450-680g) — branzino, striped bass, tilapia, or red snapper work beautifully 

1 tablespoon Shaoxing wine (or dry sherry)
2-inch piece ginger — half sliced, half minced

The Pickled Chili Topping

2-3 tablespoons chopped pickled red chilies (剁椒) — adjust to your heat preference
4 cloves garlic — minced
1 tablespoon fermented black beans (douchi) — rinsed and drained 
2 teaspoons light soy sauce
½ teaspoon sugar — balances the saltiness

½ teaspoon Chinese black vinegar — or balsamic vinegar 

For Serving

1 block firm or medium tofu (14-16 oz) — sliced into ½-inch thick rectangles 

2 green onions — chopped
Small bunch cilantro — roughly chopped
1 tablespoon vegetable oil

Method

Step 1: Prepare the Fish

If your fish isn't already cleaned, remove the scales, gills, and guts. Rinse thoroughly and pat completely dry with paper towels.

To ensure even cooking, butterfly the fish: use a sharp knife to extend the cut from the belly all the way through the tail, then make an incision along the spine to unfold the fish into one flat piece . This also makes eating easier since you'll have fewer bones to navigate.

Make 2-3 shallow diagonal slashes on each side of the fish (through the skin). This helps the heat penetrate and the flavors absorb.

Step 2: Marinate the Fish

Place the fish on a large, shallow, heatproof plate that fits inside your steamer.

Rub the fish inside and out with Shaoxing wine. Tuck the sliced ginger pieces on top of and inside the fish. Let it marinate for 10 minutes at room temperature .

Step 3: Prepare the Tofu Base

While the fish marinates, slice the tofu into ½-inch thick rectangles. Arrange them in a single layer on the steaming plate, creating a bed for the fish .

After 10 minutes, remove the ginger slices from the fish and place the fish directly on top of the tofu.

Step 4: Make the Pickled Chili Topping

In a small bowl, combine:

Pickled red chilies

Minced garlic
Rinsed fermented black beans
Light soy sauce
Sugar
Chinese black vinegar

Mix well. Taste—it should be salty, sour, and spicy with a hint of sweetness.

Pro tip: If you want to get fancy (and have two colors of pickled chilies), use red pickled chilies on one half of the fish and green pickled chilies on the other. This is called "Two-Color Fish Head" and it's absolutely stunning .

Spread the chili mixture evenly over the entire surface of the fish. Don't be shy—cover it completely.

Step 5: Steam the Fish

Fill a wok or large pot with about 2 inches of water. Place a steamer rack inside and bring the water to a rolling boil over high heat .

Carefully transfer the plate with the fish and tofu onto the steamer rack. Cover and steam for 8-10 minutes (for a 1.5 lb fish). The fish is done when the flesh is opaque and flakes easily with a fork, or when a chopstick pierces through the thickest part with no resistance .

Timing guide: 5-6 minutes for fish under 1 lb, 6-8 minutes for 1-1.5 lb, 10-12 minutes for larger or thicker fish .

Step 6: The Sizzling Oil Finish

Carefully remove the plate from the steamer (watch out for steam burns!). You'll notice a significant amount of liquid has accumulated—this is gold. Spoon some of that flavorful juice back over the fish.

Sprinkle the chopped green onions and cilantro over the top.

In a small pan, heat 1 tablespoon of vegetable oil until it's shimmering and just starting to smoke. Carefully pour the hot oil over the green onions and cilantro . You'll hear a satisfying sizzle as the aromatics release their fragrance.

Step 7: Serve Immediately

Bring the whole plate to the table—this is a centerpiece dish. Serve with plenty of steamed jasmine rice.


The "Aha!" Moment

The first time you eat this, pay attention to the contrast. The fish is silky, sweet, and impossibly tender—almost melting on your tongue. The pickled chili topping is fierce, funky, and addictive—each bite delivering a burst of sour heat.

And then there's the tofu. Sitting beneath the fish, it has been quietly absorbing all the spicy, savory juices that dripped down during steaming. By the time you get to it, the tofu is exploding with flavor—a perfect second act to the fish .

Don't forget to spoon the leftover sauce over your rice. That's where the real magic lives.


Variations

If you want...Try this...
No bonesUse 12 oz of skin-on fish fillets (tilapia, flounder, or sea bass) and steam for only 5-6 minutes 
Traditional fish head versionUse a large bighead carp or salmon head (about 2 lbs). Steam for 12-15 minutes 
Noodles instead of tofuServe with cooked egg noodles. After eating the fish, toss the noodles in the spicy sauce—incredible 
Extra heatAdd chopped fresh red Thai bird's eye chilies to the topping mixture
Milder versionRinse the pickled chilies before using to remove some salt and heat; reduce to 1 tablespoon

What to Serve With It

Steamed jasmine rice — Absolutely essential. You need something to soak up that sauce.

A simple stir-fried green vegetable — gai lan, bok choy, or Chinese broccoli to add freshness
Cold beer — Tsingtao or any light lager cuts through the spice beautifully

Storage & Leftovers

Leftovers (if you have any) will keep in the refrigerator for 2-3 days. The fish is best eaten fresh, but the leftover sauce and tofu are still fantastic.

To reheat: Gently steam for 3-4 minutes or microwave in short bursts. Don't overheat or the fish will dry out.


Troubleshooting

ProblemSolution
Fish tastes fishyYou didn't remove the blood vessels along the spine or the black membrane inside the belly. These are the main sources of fishy odor .
Fish is overcooked/dryYou steamed too long. Check doneness early—fish continues cooking slightly after you turn off the heat.
Too saltyRinse the pickled chilies and fermented black beans before using. Also reduce or omit the soy sauce.
Not spicy enoughNot all pickled chilies are created equal. Lao Gan Ma brand is spicier than Tantan Xiang . Add fresh chilies for more heat.
Too much liquid on plateThis is normal! The fish releases juices during steaming. Spoon it over the fish and rice—it's delicious.

Final Verdict

Pickled Chili Fish is the dish that made me fall in love with Hunan cuisine. It's bold without being brutal, complex without being complicated, and impressive without being difficult.

The first time you make it, you'll be amazed that something so simple—just fish, chilies, and steam—can taste so transcendent. By the third or fourth time, you'll be experimenting with different fish, different chilies, and maybe even making your own pickled peppers from scratch.

This is the dish that turns a Tuesday night into a celebration. Make it once, and it will enter your permanent rotation.


Have you ever cooked with pickled chilies before? What's your favorite Hunan dish? Let me know in the comments below! 🌶️


Prep time: 20 minutes
Cook time: 10 minutes
Difficulty: Easy
Spice level: 🔥🔥🔥 (medium-hot - adjustable with chilies)