There is an old saying in Zhuji, a city in China’s Zhejiang province: a banquet isn’t a banquet without Xishi Tofu.

Growing up, I remember this dish being the star of every major family gathering, from Lunar New Year dinners to weddings. It is named after Xi Shi, one of the legendary “Four Beauties” of ancient China, who hailed from Zhuji. Locals say the tofu is as white, tender, and smooth as the beauty herself.
But don’t let the poetic name fool you—this is hearty, down-to-earth comfort food. Unlike the fiery heat of Mapo Tofu, Xishi Tofu relies on a rich, savory broth (stock) and a beautiful interplay of textures. You have the silky, melt-in-your-mouth tofu contrasting against crunchy bamboo shoots, chewy gizzards, and tender pork belly.
When I cook this for my family now, I make a big pot. We ladle it thickly over steamed white rice, stirring it in until every grain is coated in that glossy, savory gravy. It is the kind of meal that guarantees empty bowls from both adults and kids.
What Is Xishi Tofu?
Xishi Tofu (西施豆腐) is a traditional dish from Zhuji, Zhejiang Province. It falls under the category of a “Geng” (羹) in Chinese cuisine—a thick soup or stew thickened with starch.

While many Western tofu dishes focus on searing or frying for texture (like Crispy Pan-Fried Tofu), this dish celebrates the natural softness of the tofu. The tofu is cut very small and braised so it absorbs the umami from the chicken stock, pork fat, and oyster sauce.
Why This Recipe Works
- Texture Symphony: The combination of soft tofu, crunchy bamboo shoots, slightly chewy wood ear mushrooms, and gizzards creates a complex mouthfeel in every bite.
- Flavor Layering: We render fat from pork belly first to build a savory foundation, then layer in a rich stock.
- The Sauce: The starch slurry at the end transforms the broth into a clingy, glossy gravy that coats the ingredients rather than just sitting at the bottom of the bowl.
Key Ingredients & Substitutions
1. The Tofu
The original recipe specifically warns against using “Old Tofu” (Firm/Extra Firm) because the texture is too rough, and “Lactone/Silken Tofu” because it breaks too easily.
- Best Choice: Look for “Soft” or “Medium” block tofu in Asian markets. It holds its shape just enough but melts in your mouth.
- Substitute: If you can only find Firm tofu, that is okay, but the texture will be less traditional.
2. Bamboo Shoots (Sun 笋)
This adds the essential crunch. The recipe calls for “Whip Shoots” (Bian Sun), which are seasonal.
- In the West: Fresh bamboo shoots are rare. You can use fresh Winter Bamboo Shoots if available, or high-quality canned/vacuum-packed bamboo shoots.
- Tip: If using canned shoots, be sure to blanch them to remove the “tinny” taste.
3. Chicken or Duck Gizzards
This is the secret to the authentic chewiness (“Q-texture”).
- Preparation: They must be pre-cooked (boiled) before dicing.
- Substitution: If you are squeamish about offal, you can substitute diced chicken thigh meat, though you will miss that traditional texture contrast.
4. High Stock (Gao Tang 高汤)
Since tofu itself is bland, the liquid it cooks in matters.
- Best: Homemade chicken or duck stock.
- Good: Store-bought low-sodium chicken broth.
- Vegetarian: Use a robust vegetable stock and skip the meats.
Recipe Notes Before You Start
- Prep is 90% of the Work: This is a spoonable dish. Every ingredient—the pork, bamboo shoots, gizzards, and wood ears—should be diced to roughly the same small size (about the size of a pea). This ensures every spoonful has a mix of everything.
- Handling the Tofu: Soft tofu is delicate. We will cut it while it’s still in the box (a great restaurant hack!) to keep it intact until it hits the pan.
- The Thickening: Don’t dump all the cornstarch slurry in at once. You want a “thick soup” consistency, not a solid jelly.
Mise en Place (Prep Work)
- Rehydrate Fungus: Soak the dried wood ear mushrooms in warm water for 20 minutes until soft. Wash thoroughly to remove grit, then chop finely.

- Pre-cook Gizzards: Boil the chicken/duck gizzards in water (optional: add a slice of ginger and a splash of wine) until cooked through. Drain and dice into small cubes.


- Blanch Shoots: Boil the bamboo shoots for about 10 minutes. Why? This removes oxalic acid (which causes astringency/bitterness) and ensures a clean, sweet flavor. Drain and dice.

- Dice Pork: Cut the pork belly into small cubes (smaller than the tofu).
- Prep Tofu: Peel the plastic off the tofu box. Carefully make vertical and horizontal cuts through the block while it is still in the box. Then, invert it onto a plate. Slice horizontally twice more to create small cubes.




How to Make Xishi Tofu
Step 1: Render the Pork Heat your wok or large skillet over medium heat. Add the diced pork belly. Stir-fry slowly until the fat renders out and the meat turns golden.
Chef’s Note: We don’t need extra oil if the pork belly is fatty enough. This rendered fat provides the base aroma for the dish.

Step 2: Sauté the Aromatics Add the diced bamboo shoots to the pork. Stir-fry for 1-2 minutes.
Tip: Stir-frying the bamboo shoots evaporates excess moisture and intensifies their flavor. Add the diced gizzards and chopped wood ear mushrooms. Stir-fry for another minute until well combined.




Step 3: Add Tofu and Stock Gently slide the cubed tofu into the pan. Be careful not to break it too much. Pour in the chicken stock (or broth). The liquid should just barely cover the ingredients.



Step 4: Season and Simmer Add the salt, sugar, light soy sauce, and oyster sauce. Gently give it a stir (push from the back of the wok to avoid crushing the tofu). Bring to a boil, then lower the heat to medium. Cover and simmer for 3-5 minutes.
Why? This allows the tofu to absorb the savory flavors of the broth and meat.


Step 5: Thicken (The Important Part) Mix the cornstarch with water to make a slurry (about 1:2 ratio). Turn the heat up slightly. Pour the slurry in slowly, stirring gently and constantly. Stop when the sauce turns glossy and thick enough to coat a spoon (similar to a heavy cream consistency). If it’s too thin, it won’t hold the flavor; too thick, and it becomes gloopy.


Step 6: Finish Toss in the chopped scallions. Give it one final gentle stir and remove from heat. Serve immediately.




Tips to Succeed
- Don’t Skip the Blanching: Bamboo shoots can ruin a dish if they taste bitter or metallic. The 10-minute boil is non-negotiable.
- Gentle Hands: Once the tofu is in the pan, trade your metal spatula for a ladle or a silicone spatula, and use a pushing motion rather than a flipping motion.
- Taste Test: Before thickening, taste the broth. Tofu dilutes flavor, so the broth should taste slightly saltier than you want the final dish to be.
How to Serve Xishi Tofu
This dish is traditionally served family-style in a large bowl.
- The Classic Way: Serve it over a bowl of hot steamed jasmine rice. The thick sauce mixes with the rice to create a risotto-like texture that is incredibly comforting.
- Pairings: Serve alongside a crunchy green vegetable like Baby Bok Choy Stir Fry or a cold appetizer like Silken Tofu with Sichuan Pepper Oil for temperature contrast.
Food Safety and Preparation
- Pork Safety: Ensure the pork belly is cooked through. According to the USDA, pork should reach an internal temperature of 145°F (63°C), though in this braised dish, it will go well past that to become tender.
- Reheating: Reheat gently on the stove. Tofu can release water in the fridge, so the sauce might thin out. You may need to add a tiny splash of starch water to bring it back together.
- Allergens: This recipe contains Soy (tofu, soy sauce) and Gluten (soy sauce, oyster sauce). For a gluten-free version, use Tamari and GF oyster sauce.
Frequently Asked Questions
Q: Can I make this vegetarian? A: Yes! Omit the pork and gizzards. Sauté chopped shiitake mushrooms to replace the meaty flavor, and use vegetable stock and vegetarian oyster sauce (mushroom sauce).
Q: My sauce turned watery after serving. Why? A: This happens if the starch wasn’t cooked long enough or the tofu released more water. Make sure to simmer the starch for at least 30 seconds to fully gelatinize it.
Q: Can I use chicken breast instead of pork belly? A: You can, but you will need to add cooking oil to step 1, as chicken breast won’t render fat like pork belly does. The flavor will be lighter.
Our Systematic Test Kitchen Notes
We tested this recipe with different tofu types.
- Firm Tofu: Held shape perfectly but didn’t absorb the broth well. The texture felt disconnected from the sauce.
- Silken Tofu: Tasted amazing but turned into a scramble almost immediately.
- Medium/Soft Tofu: The winner. It absorbed the savory broth and provided that signature “slippery” mouthfeel of authentic Xishi Tofu.
Notes
- Tofu Selection: Do not use Extra Firm or Silken tofu for the authentic texture. Look for “Soft” or “Medium”.
- Bamboo Shoots: If using canned bamboo shoots, the 10-minute boiling step is crucial to remove the metallic taste.
- Nutrition Disclaimer: Nutrition information is calculated using an ingredient database and should be considered an estimate. In cases where multiple ingredient alternatives are given, the first listed is calculated for nutrition. Garnishes and optional ingredients are not included.
- Allergen Info: Contains Soy, Wheat (in sauces).
Nutrition (Estimate per serving):
- Calories: 185 kcal
- Carbohydrates: 12g
- Protein: 14g
- Fat: 10g
- Saturated Fat: 3g
- Sodium: 680mg
- Fiber: 3g
- Sugar: 2g
Authoritative References
- Pork Cooking Temperatures: USDA Food Safety and Inspection Service – Guidelines for safe pork preparation.
- Tofu Nutrition: WebMD Tofu Health Benefits – Overview of tofu’s nutritional profile.

Xishi Tofu (Savory Tofu Stew with Meat and Bamboo Shoots)
Ingredients
Equipment
Method
- Soak wood ear mushrooms in warm water until soft, wash thoroughly, and chop finely.
- Boil the chicken/duck gizzards in water until cooked through, then dice into small cubes.
- Peel bamboo shoots and boil in water for 10 minutes to remove bitterness. Drain and dice.
- Dice the pork belly into small cubes. Finely chop the scallions.
- Remove tofu from package. Carefully cut into small cubes (approx 1cm) while keeping the block shape.
- Heat a wok over medium heat. Add pork belly and stir-fry until the fat renders and the meat turns golden.
- Add the diced bamboo shoots, gizzards, and wood ear mushrooms. Stir-fry for 2 minutes.
- Gently slide the cubed tofu into the wok. Pour in the chicken stock.
- Add salt, sugar, light soy sauce, and oyster sauce. Gently stir to combine without breaking the tofu.
- Bring to a boil, then reduce heat to medium. Cover and simmer for 3-5 minutes.
- Stir the cornstarch slurry and slowly pour it into the simmering sauce, stirring gently until thickened.
- Garnish with chopped scallions, toss gently, and serve immediately.
Notes
Bamboo Shoots: Always boil bamboo shoots for 10 minutes before using to remove bitterness, especially if using winter shoots.
Nutrition Disclaimer: Nutrition information is calculated using an ingredient database and should be considered an estimate. In cases where multiple ingredient alternatives are given, the first listed is calculated for nutrition. Garnishes and optional ingredients are not included.
















