Homemade Taiwanese Savory Tang Yuan 鹹湯圓
For a cold weather Asian holiday season classic, you have to try making these homemade Taiwanese Savory Tang Yuan 鹹湯圓, or chewy, savory, glutinous rice balls. These pockets of holiday delights are filled with a yummy savory pork mushroom filling, and served with a light, gingery broth. I’ll always have some of leftover sticky rice balls in the freezer after holiday meals, so I can make a quick bowl of this cozy winter Asian classic any time.

Xián Tāng Yuán: Savory Sticky Rice Ball with Fillings
Sticky Rice Balls with savory pork fillings is one of the recipes from my cook book! Since it’s getting colder, I wanted to re-share this popular winter food especially in Fujian and Taiwan. These rice balls have a soft, chewy, mochi-like wrapper filled with seasoned pork and mushrooms, served in a fragrant broth that warms you right up. They’re both fun to make and to eat!
These sticky rice balls are actually eaten throughout the year, because they’re so easy to freeze and cooks fast once made. But, tang yuan symbolize togetherness and are often enjoyed during family celebrations, especially during Lunar New Year. While many people know the sweet version served in ginger syrup, savory tang yuan with meat fillings are especially popular in Taiwan, which has a large Hakka population. So, try switching things up by hand making these rice balls instead of dumplings with your family this holiday season!
my cookbook is now available!
Tiffy Cooks Cookbook
This recipe was actually part of my Tiffy Cooks Cookbook, containing 88 recipes shaped by growing up in Taiwan, a country with rich culture, diverse cuisines, and some of the best street food in the world. Plus, beloved family recipes and unique dishes inspired by my travels across Southeast Asia.
I cannot believe it is FINALLY READY! I went from cooking in my dorm room while FaceTiming my mom to learn her homemade recipe to now sharing these recipes with you!
Ingredients For Hakka Savory Tang Yuan
Sticky Rice Dough
- 200 g glutinous rice flour plus more as needed
- 1 tablespoons sugar
- ¼ cup freshly boiled water 60 ml
- ⅓ cup cold water 80 ml, plus more as needed
Savory Mushroom Pork Filling
- 1 teaspoon neutral oil
- 1 cup finely chopped fresh shiitake mushrooms tough stems removed
- 7 ounces ground pork 200 g
- 1 tablespoon dried shrimp soaked until softened, drained, and finely chopped (optional)
- 1 tablespoon fried shallots
- 3 green onions white and green parts finely chopped
- 2 tablespoons soy sauce
- 2 tablespoons vegetarian oyster sauce
- 1 teaspoon ground white pepper
- 1 teaspoon dashi powder
Ginger Broth
- 2 cups chicken or vegetable stock 480 ml, preferably unsalted or low-sodium
- 1 tablespoon soy sauce or to taste
- 3 thin slices ginger
- 1 tablespoon fried shallots
- 1 teaspoon ground white pepper or to taste
- Fresh cilantro leaves for garnish
- Chopped green onion for garnish

Sticky Rice Dough
The outside of savory tang yuan is sticky rice dough that is chewy, and super satisfying. It’s made with a few simple ingredients: sticky rice flour, sugar, and water. Make sure you’re using sticky rice flour, or glutinous rice flour. Normal rice flour will NOT produce the same chewy texture. Once you’ve made the dough, make sure to keep it covered when you’re not working with it to avoid it drying out during wrapping.
The wrappers are naturally gluten-free. So, if you’d like to make the entire dish gluten-free, use certified gluten-free replacement in the sauces, stock, and seasonings.

Savory Mushroom Pork Filling
The filling for savory tang yuan is a mix of ground pork, chopped sauteed mushrooms, dried shrimp, fried shallots, and green onions. I sauteed the mushrooms separately to release some of the moisture inside and not make it soggy. It is savory, fragrant, with a hint of seafood umami. You can add the fried shallots directly into the filling instead of with the mushrooms, because it’s already cooked. Then, it’s seasoned with soy sauce, oyster sauce, white pepper, and dashi powder for the right amount of umami kick. Remember, you can taste test your fillings before wrapping by microwaving a tiny amount!

Freezing Your Tang Yuan
Freezing the sticky rice balls is the easiest meal to make in bulk during the holidays, and then cook up a single serving for a quick lunch for myself on a workday. To freeze them, arrange the uncooked rice balls on a parchment-lined baking sheet, leaving space between them. Freeze for about 2 hours, or until firm, then transfer to a freezer-safe resealable bag or airtight container. Store in the freezer for up to 1 month.
Cook directly from frozen; do not thaw. Follow the rest of the recipe to cook the rice balls, allowing additional time. Make sure to check that the center of the pork filling reaches 71°C (160°F) and is fully cooked.

How To Make Taiwanese Sticky Rice Balls
- Make Sticky Rice Dough
- In a large bowl, combine the glutinous rice flour and sugar. Slowly pour in the freshly boiled water while stirring with chopsticks. The mixture will still look crumbly.
- Gradually add the cold water, stirring until clumps form. Once cool enough to handle, knead until the dough is smooth, soft, and pliable.
- If the dough cracks when gently pressed or rolled, knead in additional water, 1 teaspoon at a time. If it is sticky, add a little more glutinous rice flour. Cover tightly and let rest for 15 minutes.
- Prepare Filling
- Heat the oil in a skillet over medium heat. Add the mushrooms and sauté until softened and any released moisture has evaporated, about 3–5 minutes. Transfer to a bowl and let cool completely.
- Add the raw ground pork, dried shrimp, fried shallots, green onions, soy sauce, vegetarian oyster sauce, white pepper, and dashi powder. Mix thoroughly until the filling becomes slightly sticky.
- Cook a small spoonful in a skillet until fully cooked, then taste and adjust the seasoning if needed.
- Divide Dough and Filling
- Divide the remaining filling into 15 equal portions. For easier wrapping, place the portions on a parchment-lined tray and freeze for 10–15 minutes, or until solid. Keep frozen until ready to use.
- Roll the dough into a log and cut it into 15 equal pieces. Keep the pieces covered with plastic wrap or a clean, lightly damp towel so they do not dry out.
- Fill and Shape
- Working with one piece at a time, roll the dough into a ball. Press your thumb into the center, then gently widen the opening to form a small cup, keeping the bottom slightly thicker than the edges.
- Place one portion of filling in the center. Gently bring the dough up around the filling and pinch the opening closed, taking care not to trap air inside.
- Roll gently between your palms to form a smooth ball. Check that the filling is completely enclosed and there are no cracks. Repeat with the remaining dough and filling.
- Prepare Broth
- Combine the stock, soy sauce, and ginger in a saucepan. Bring to a gentle simmer over medium-high heat, then reduce the heat and simmer for 5 minutes.
- Stir in the fried shallots and white pepper. Taste and adjust the seasoning. Keep warm while you cook the rice balls.
- Cook and Serve
- Bring a large pot of water to a boil over high heat. Carefully lower in the rice balls, cooking in batches if needed to avoid overcrowding. Gently loosen them from the bottom with a spoon.
- Reduce the heat to maintain a gentle boil. Cook until the wrappers are tender and the pork filling is fully cooked, approximately 10 minutes depending on their size and the temperature of the filling.
- The rice balls will float as they cook. Check one with an instant-read thermometer inserted into the center of the filling; it should reach 71°C (160°F).
- Use a slotted spoon to divide the rice balls among serving bowls. Ladle the hot broth over them and garnish with cilantro and green onion. Serve immediately.
Traditional Asian Foods I Keep In The Freezer





Homemade Taiwanese Savory Tang Yuan 鹹湯圓
By Tiffy Cooks
Ingredients
Sticky Rice Dough
- 200 g glutinous rice flour plus more as needed
- 1 tablespoons sugar
- ¼ cup freshly boiled water 60 ml
- ⅓ cup cold water 80 ml, plus more as needed
Savory Mushroom Pork Filling
- 1 teaspoon neutral oil
- 1 cup finely chopped fresh shiitake mushrooms tough stems removed
- 7 ounces ground pork 200 g
- 1 tablespoon dried shrimp soaked until softened, drained, and finely chopped (optional)
- 1 tablespoon fried shallots
- 3 green onions white and green parts finely chopped
- 2 tablespoons soy sauce
- 2 tablespoons vegetarian oyster sauce
- 1 teaspoon ground white pepper
- 1 teaspoon dashi powder
Ginger Broth
- 2 cups chicken or vegetable stock 480 ml, preferably unsalted or low-sodium
- 1 tablespoon soy sauce or to taste
- 3 thin slices ginger
- 1 tablespoon fried shallots
- 1 teaspoon ground white pepper or to taste
- Fresh cilantro leaves for garnish
- Chopped green onion for garnish
Instructions
Make Sticky Rice Dough
- In a large bowl, combine the glutinous rice flour and sugar. Slowly pour in the freshly boiled water while stirring with chopsticks. The mixture will still look crumbly.
- Gradually add the cold water, stirring until clumps form. Once cool enough to handle, knead until the dough is smooth, soft, and pliable.
- If the dough cracks when gently pressed or rolled, knead in additional water, 1 teaspoon at a time. If it is sticky, add a little more glutinous rice flour. Cover tightly and let rest for 15 minutes.
Prepare Filling
- Heat the oil in a skillet over medium heat. Add the mushrooms and sauté until softened and any released moisture has evaporated, about 3–5 minutes. Transfer to a bowl and let cool completely.
- Add the raw ground pork, dried shrimp, fried shallots, green onions, soy sauce, vegetarian oyster sauce, white pepper, and dashi powder. Mix thoroughly until the filling becomes slightly sticky.
- Cook a small spoonful in a skillet until fully cooked, then taste and adjust the seasoning if needed.
Divide Dough and Filling
- Divide the remaining filling into 15 equal portions. For easier wrapping, place the portions on a parchment-lined tray and freeze for 10–15 minutes, or until solid. Keep frozen until ready to use.

- Roll the dough into a log and cut it into 15 equal pieces. Keep the pieces covered with plastic wrap or a clean, lightly damp towel so they do not dry out.
Fill and Shape
- Working with one piece at a time, roll the dough into a ball. Press your thumb into the center, then gently widen the opening to form a small cup, keeping the bottom slightly thicker than the edges.

- Place one portion of filling in the center. Gently bring the dough up around the filling and pinch the opening closed, taking care not to trap air inside.

- Roll gently between your palms to form a smooth ball. Check that the filling is completely enclosed and there are no cracks. Repeat with the remaining dough and filling.

Prepare Broth
- Combine the stock, soy sauce, and ginger in a saucepan. Bring to a gentle simmer over medium-high heat, then reduce the heat and simmer for 5 minutes.
- Stir in the fried shallots and white pepper. Taste and adjust the seasoning. Keep warm while you cook the rice balls.
Cook and Serve
- Bring a large pot of water to a boil over high heat. Carefully lower in the rice balls, cooking in batches if needed to avoid overcrowding. Gently loosen them from the bottom with a spoon.

- Reduce the heat to maintain a gentle boil. Cook until the wrappers are tender and the pork filling is fully cooked, approximately 10 minutes depending on their size and the temperature of the filling.
- The rice balls will float as they cook. Check one with an instant-read thermometer inserted into the center of the filling; it should reach 71°C (160°F).
- Use a slotted spoon to divide the rice balls among serving bowls. Ladle the hot broth over them and garnish with cilantro and green onion. Serve immediately.

Notes
-
- Use glutinous rice flour: Regular rice flour will not produce the same chewy texture.
-
- Keep the dough covered: It dries out quickly, which can cause cracking during wrapping.
-
- Fried shallots are already cooked: Add them directly to the filling; they do not need to be sautéed again.
-
- Adjust the broth to your preference: Two cups makes a lightly brothed dish. For a soupier version, add more stock and adjust the seasonings.
Arrange the uncooked rice balls on a parchment-lined baking sheet, leaving space between them. Freeze for about 2 hours, or until firm, then transfer to a freezer-safe resealable bag or airtight container. Store in the freezer for up to 1 month. Cook directly from frozen; do not thaw. Follow the cooking method above, allowing additional time and checking that the center of the pork filling reaches 71°C (160°F).


