Homemade Vietnamese Meatballs (Xiu Mai)

Important Note: When you buy through our links, we may earn a commission. As an Amazon Associate we earn from qualifying purchases. Content, pricing, offers and availability are subject to change at any time - more info.

Vietnamese meatballs, also known as xiu mai, are a must-try recipe for any meatball and Vietnamese food lover. Vietnamese xiu mai are typically made with ground pork or beef, mixed with Vietnamese seasonings and aromatics, and then steamed or simmered in a tomato-based sauce.

You may have heard of xiu mai dim sum, but that’s a completely different Cantonese recipe (you can check out a recipe for Xiu Mai Pork and Shrimp Dumplings here). These tasty dumplings are often served at dim sum meals as a snack or appetizer.

Vietnamese meatballs, unlike xiu mai dim sum, are often served as a main dish, accompanied by rice or in a sandwich as bahn mi xiu mai, with herbs, cucumbers, and pickled radishes for freshness.

Why You’ll Love This Xiu Mai Recipe

Vietnamese meatballs or Vietnamese xiu mai are savory, warm, and saucy, making them an incredibly satisfying meal. There’s plenty of umami from traditional Vietnamese condiments like fish sauce and sesame oil, as well as from western ingredients such as tomato paste.

Xiu mai are easy to make and customizable to your preferences. Some families use jicama in the meatballs, but you can use shredded carrots or cabbage. And adjust the seasonings to your liking.

They can be served in a variety of ways. This Vietnamese meatball recipe is packed with flavor and can be eaten for breakfast, lunch, or dinner.

Vietnamese xiu mai are a great option for meal prep and can be frozen for later use. You can freeze them without the tomato sauce and then cook them in fresh tomato sauce whenever you need a quick and tasty meal.

What Are Vietnamese Meatballs Made Of?

We’ve already answered the question, “what is xiu mai made of?”, but let’s see exactly what ingredients you’ll need for making homemade xiu mai in tomato sauce:

For the Vietnamese meatballs:

  • 1 pound ground pork
  • 1/4 cup chopped onions
  • ½ cup jicama, peeled and julienned
  • 1 Tbsp. fish sauce
  • 1 Tbsp. sugar
  • 1 Tbsp. cornstarch
  • 1 tsp. sesame oil
  • 1 ½ tsp. salt
  • 1/2 tsp. black pepper
  • 1 egg

For the tomato sauce:

  • 1 Tbsp. vegetable oil
  • 1/4 cup white part of spring onions, minced (or shallot)
  • 2 garlic cloves, minced
  • 2 cups fresh chopped tomatoes
  • 1 Tbsp. tomato paste (or ketchup and reduce the sugar)
  • 1 Tbsp. sugar
  • 1 ½ Tbsp. fish sauce
  • 1 tsp. salt (or more to taste)
  • 1/2 tsp. black pepper
  • 1/2 cup water

How To Make Xiu Mai?

Step 1: Prepare the meatballs

In a large bowl, mix together the ground pork, chopped onions, julienned jicama, fish sauce, sugar, cornstarch, salt, black pepper, sesame oil, and egg until well combined. Let rest for 15 minutes.

Use your hands to form the mixture into small meatballs, about the size of a ping pong ball.

Boil water in your steamer, and steam the meatballs for 10 minutes (in two batches if necessary). Save the juice, as we’ll be adding all that amazing flavor to the sauce.

Step 2: Make the tomato sauce

In a large saucepan or Dutch oven, heat the vegetable oil over medium-high heat. Add the spring onions and garlic, and cook until fragrant and softened, about 2-3 minutes.

Add the chopped tomatoes, tomato paste, sugar, fish sauce, salt, black pepper, and water. Stir to combine and cook until the tomato softens and disintegrates (about 5 minutes). Now pour in water and bring to a boil.

Step 3: Add the meatballs to the sauce

Add the meatballs to the sauce, making sure they are fully submerged.

Bring the sauce to a boil, then reduce the heat to low and simmer for about 10 minutes, stirring occasionally, until the meatballs are fully cooked and the sauce has thickened.

Serve hot with rice and fresh herbs, such as cilantro and basil. Or with a Vietnamese baguette (bahn mi). Enjoy!

Notes & Tips

If you prefer a smoother sauce, use an immersion blender to puree the sauce before adding the meatballs.

Letting the raw meatball mass chill for 15 minutes before steaming them allows the flavors to bloom. Make sure to cover the mass with plastic wrap while it’s chilling.

For a spicier kick, add sliced chili peppers or chili flakes to the sauce. Or even to the meatballs. Why not go wild?

To be sure your meatballs are seasoned to your liking, cook a teaspoon of the meatball mass in a pan or the microwave and taste-test it. I find the balance of savory, umami, and sweet is perfect in this xiu mai recipe, but every palate is different!

If you want to make a lighter, healthier option, discard the juices from the steamed meatballs and add more water to the sauce instead. But I highly recommend utilizing that free flavor.

Variations and Substitutions

Use ground beef instead of pork for a different flavor. Or a combination of both.

Add chopped carrots or bell peppers to the sauce for more texture and nutrients. You can even add some greens to supercharge it.

Make my homemade Vietnamese meatballs pho by simply adding these xiu mai without the tomato sauce to a bowl of instant pho bo noodles. Bonus points for serving with lime, green chilis, bean sprouts, and fresh basil and cilantro. Yum!

If you can’t find jicama, substitute carrots, cabbage, or even taro. You can also add more vegetables to the meatball mass such as some frozen peas for color.

Substitute a 14.5-ounce can of diced tomatoes for the fresh tomatoes and ditch the tomato paste for a quicker fix. I know chopping tomatoes is not one of my favorite things to do.

I haven’t tried making vegan Vietnamese meatballs, but I’m sure it’s possible with dehydrated soy chunks. I would rehydrate them in water with salt, then add the rest of the ingredients, substituting soy sauce for the fish sauce and chickpea flour for the egg.

Serving Suggestions

Vietnamese meatballs can be served as a main dish with rice or noodles and fresh herbs. Typical herbs include basil, spring onions, and cilantro.

Use the meatballs as a filling for banh mi xiu mai, the Vietnamese version of a meatball sandwich. Spoon the hot meatballs and sauce into a sliced Vietnamese bahn mi (baguette), and top with cilantro, sliced cucumbers, and pickled radishes and carrots.

Make Vietnamese meatballs soups or stews with your favorite vegetables and broth (try this Simple Low FODMAP Bone Broth, for example). Or try my homemade Vietnamese meatballs pho mentioned above!

How Do You Freeze Meatballs In Sauce?

Leftover meatballs and sauce can be stored in the fridge for up to 3 days or frozen for up to 3 months. Simply place the meatballs and sauce in a freezer bag or container once cooled.

Pre-cooked and frozen Vietnamese meatballs can be cooked right away in a pot with a little water or in tomato sauce. There’s no need to thaw them since they’ve already reached a safe internal temperature before freezing.

You can also freeze raw meatballs by themselves, then thaw them overnight, and add then cook them in tomato sauce once you’re ready to eat them.

Vietnamese Meatballs (Xiu Mai)

Prep Time: 20 minutes
Cook Time: 20 minutes
Rest Time: 15 minutes
Total Time: 55 minutes
Servings: 4
Calories: 427kcal

Ingredients

For the meatballs:

  • 1 pound ground pork
  • 1/4 cup chopped onions
  • ½ cup jicama peeled and julienned
  • 1 Tbsp. fish sauce
  • 1 Tbsp. sugar
  • 1 Tbsp. cornstarch
  • 1 ½ tsp. salt
  • 1/2 tsp. black pepper
  • 1 egg

For the tomato sauce:

  • 1 Tbsp. vegetable oil
  • 1/4 cup white part of spring onions minced (or shallot)
  • 2 garlic cloves minced
  • 2 cups fresh chopped tomatoes
  • 1 Tbsp. tomato paste or ketchup and reduce the sugar
  • 1 Tbsp. sugar
  • 1 ½ Tbsp. fish sauce
  • 1 tsp. salt or more to taste
  • 1/2 tsp. black pepper
  • 1/2 cup water

Instructions

  • In a large bowl, mix together the ground pork, chopped onions, julienned jicama, fish sauce, sugar, cornstarch, salt, black pepper, sesame oil, and egg until well combined. Let rest for 15 minutes.
  • Use your hands to form the mixture into small meatballs, about 1 Tbsp. each.
  • Boil water in your steamer, and steam the meatballs for 10 minutes.
  • In a large saucepan or Dutch oven, heat vegetable oil over medium-high heat.
  • Add the spring onions and garlic, and cook until fragrant and softened.
  • Add the chopped tomatoes, tomato paste, sugar, fish sauce, salt, black pepper, and water. Stir to combine and cook until the tomato softens and disintegrates (about 5 minutes). Now pour in water and bring to a boil.
  • Add the meatballs with their juice to the sauce, and stir to fully submerge.
  • Bring the sauce to a boil, then reduce to a simmer for about 10 minutes, stirring occasionally, until the sauce has thickened and the meatballs are fully cooked.
  • Serve hot with rice and fresh herbs or with a Vietnamese baguette. Enjoy!

Nutrition

Calories: 427kcal | Carbohydrates: 19g | Protein: 22g | Fat: 29g | Saturated Fat: 10g | Polyunsaturated Fat: 5g | Monounsaturated Fat: 12g | Trans Fat: 0.03g | Cholesterol: 123mg | Sodium: 2042mg | Potassium: 678mg | Fiber: 3g | Sugar: 11g | Vitamin A: 275IU | Vitamin C: 17mg | Calcium: 76mg | Iron: 3mg

Recent Recipes