San choy bow made with pork, pepper, and water chestnut

San choy bow started as a Cantonese banquet dish and has become a popular appetizer in Western Chinese restaurants, usually served as bite sized wraps at the start of a meal. The pork is minced small so it stays tender and juicy, while water chestnuts and red pepper give the filling its crunch. If you want a meat free version, my tofu lettuce wraps use the same idea with a different filling.

I like making this recipe most often when friends come over, because it turns dinner a fun activity everyone does with their hands. I set the warm pork filling, the lettuce leaves, the peanuts, and the sauces in the middle of the table and let each person wrap their own. My son skips the lettuce and eats the filling plain over rice, which is his own small version of the same meal.

The cooking process is pretty easy once everything is chopped. I brown the pork first so it takes on color, cook the aromatics next to it, then stir in the sauce and the vegetables at the end so they stay crisp, all in about 25 minutes from pan to table. If you want an appetizer that gets everyone reaching across the table, put this one together using the steps below.

Scooping up Chinese pork lettuce wrap

Ingredients 

I love to make San choy bow at home because it is extremely fast and easy to make and uses mostly pantry ingredients.

Ingredients for making pork lettuce wrap

Brown sauce: I mix the sauce before I turn on the heat so it goes in as one pour. Oyster sauce and Shaoxing wine give it a savory depth, hoisin adds the light sweetness, and a little light soy sauce with a touch of dark soy sauce rounds out the color and the salt. Black pepper keeps it from tasting flat.

Pork and aromatics: I use ground pork because it stays juicy and takes on the sauce well. Minced onion, garlic, and ginger go in right after the pork browns so they cook in the pork fat.

The crunch: Water chestnuts are the one thing I would not skip here, since their crispness gives the filling its texture. I dice them small along with red pepper so every spoonful has some crunch. If I cannot find water chestnuts, canned bamboo shoots work in their place.

Wraps and toppings: I use whole lettuce leaves as the wrap, and any sturdy variety like iceberg, butterhead, or romaine holds the filling well. Chopped roasted peanuts and sliced green onions go on top, and I put chili garlic sauce on the table for anyone who wants heat.

How to Make

1. Mix the sauce: Add all the sauce ingredients to a small bowl and stir until well combined. I do this first so the sauce is ready to pour when the pork is browned.

2. Brown the pork: Heat the oil in a large skillet over medium-high heat until hot. Add the ground pork and spread it into an even layer. Cook without touching until the bottom is browned, 2 to 3 minutes.

browning the pork

3. Chop and flip: Flip the pork and chop it into smaller pieces. Cook until the other side turns golden, then move the pork to one side of the pan.

4. Cook the aromatics: Add the remaining oil, onion, garlic, and ginger to the empty side of the pan. Stir and cook for 2 minutes, then mix everything together.

5. Add the vegetables: Add the water chestnuts and red pepper. Stir and cook for another 2 minutes, until the vegetables soften slightly but stay crisp. Transfer everything to a large bowl.

adding the veggies with the pork and cook

6. Assemble and serve: Spoon the pork filling onto a lettuce leaf. Top with roasted peanuts and green onions. Drizzle chili garlic sauce or your favorite hot sauce over the top if you want it spicy, then wrap and eat.

Pork Lettuce Wrap served on a plate

My Cooking Tips

Chop everything first: The cooking moves fast, so I mix the sauce and dice all the vegetables before the pan goes on. Once the pork hits the heat there is no time to stop and prep.

Brown the pork before stirring: I let the pork sit untouched until the bottom is browned before I break it up. That color is where a lot of the savory flavor comes from, and rushing this step leaves the filling pale and steamed instead of browned.

Add the vegetables last: I stir in the water chestnuts and pepper at the very end and cook them briefly. They should stay crisp, not turn soft, since the crunch is the point of the dish.

Cool the filling before wrapping: I let the filling rest a couple of minutes off the heat before serving. Piping hot filling wilts the lettuce too fast and makes the wraps hard to hold, while a warm filling keeps the leaves crisp under it.

Prep the components ahead for a party: When friends are coming, I cook the filling earlier in the day and rewarm it before serving, and I keep the lettuce washed and chilled. That way I only set out the platter when people arrive.

How to Serve

I serve san choy bow the interactive way, with the warm filling in a bowl, a stack of lettuce leaves, and the peanuts and green onions in small dishes so everyone wraps their own at the table. For a bigger meal, I spoon the same filling over steamed rice to make a rice bowl, or pile it on a bowl of soy sauce noodles so it turns into a full dinner. I keep homemade hoisin sauce and chili garlic sauce on the table for anyone who wants to adjust their own portion.

When I serve this as the opener for a full dinner, I keep the rest of the table light and varied. A bowl of egg drop soup alongside gives everyone something warm to sip while they wrap, and a cold vegetable dish rounds things out without competing with the pork. Since the wraps are easy to eat standing up, they also work well as a starter when friends arrive and dinner is still on the stove.

Frequently Ask Questions

Can I use ground chicken instead of pork?

Yes, ground chicken or turkey both work, though they are leaner than pork so the filling turns out a little less juicy. I add an extra splash of oil to the pan and take care not to overcook the meat so it stays tender. The sauce and the water chestnuts do most of the flavor and texture work, so the wraps still taste right with a lighter meat.

Why is my filling watery?

Usually this happens when the vegetables cook too long or the pan is not hot enough, so they release water instead of staying crisp. I keep the heat high and cook the water chestnuts and pepper for only a couple of minutes at the end. If there is any liquid in the bowl, I drain it before spooning the filling into the lettuce.

How do I keep the lettuce leaves from tearing?

I separate the leaves carefully and trim off the tough base so each one cups the filling. Chilling the leaves in cold water for a few minutes makes them firmer and easier to fill without splitting. If a leaf is too large or floppy, I stack two smaller pieces or tear it down to a size that holds a single spoonful.

How long does the pork filling keep in the fridge and freezer?

The cooked filling keeps in an airtight container in the refrigerator for a few days, and I rewarm it in a hot pan so it does not steam and go soft. It also freezes well, so I portion it into freezer bags for meal prep and thaw it in the fridge before reheating. I always store the filling separately from the lettuce, since the leaves do not keep once they are filled.

Want to Save This Recipe?

Enter your email below & we’ll send it to your inbox. Plus get great new recipes from us every week!

Watch video

Pork san choy bow close-up

Pork Lettuce Wrap (San Choy Bow)

5 from 1 vote
Prep Time: 15 minutes
Cook Time: 10 minutes
Total Time: 25 minutes
Servings: 4 to 6 servings
This San choy bow is a pork lettuce wrap I can put on the table in 25 minutes, with ground pork and crisp water chestnuts stir fried in a slightly sweet brown sauce and spooned into cool lettuce leaves. I make this Cantonese style appetizer when I want dinner to be light and hands on.

Ingredients 

Sauce

Filling

  • 1 1/2 tablespoon peanut oil
  • 1 pound ground pork
  • 1 yellow onion , minced
  • 2 cloves garlic , minced
  • 1 tablespoon miced ginger , minced
  • 1 can (3.5oz) water chestnuts , small diced
  • 1 red pepper , small diced

Wrap and topping options

  • 10 to 12 lettuce leaves (Iceberg, Bibb, Butterhead, or Romaine)
  • 1/4 cup roasted peanuts , chopped
  • green onions , thinly sliced
  • Chili garlic sauce (or your favorite hot sauce)

Instructions

  • For the sauce: Add all the sauce ingredients into a small bowl and stir to mix well.
  • To make the filling: Heat 1 tablespoon of oil in a large skillet over medium-high heat until hot. Add the ground pork and spread into an even layer. Cook without touching until the bottom is browned, 2 to 3 minutes. Flip the pork and chop into smaller pieces. Cook until the other side turns golden. Move the pork to one side of the pan.
  • Add the remaining 1/2 tablespoon of oil, onion, garlic and ginger to the other side of the pan. Stir and cook for 2 minutes. Then mix everything together.
  • Add the water chestnut and the red pepper. Stir and cook for another 2 minutes, until the vegetables soften. Transfer everything to a large bowl.
  • To serve and eat: Add a spoonful of the pork filling onto a lettuce leaf. Add some roasted peanuts and green onions. Drizzle a bit of chili garlic sauce or your favorite hot sauce for a spicy taste, if desired. Enjoy as an appetizer.

Ingredient Substitution Guide

Nutrition

Serving: 1serving, Calories: 232kcal, Carbohydrates: 14.5g, Protein: 22.7g, Fat: 9.4g, Saturated Fat: 2g, Cholesterol: 55mg, Sodium: 301mg, Potassium: 542mg, Fiber: 1.6g, Sugar: 3.8g, Calcium: 27mg, Iron: 2mg

Did you make this recipe?

I’d love to hear how it turned out for you! Please take a moment to leave a 5-star rating ⭐️ and share your thoughts in the comments further down the page. It really helps others discover the recipe too.