Xíu mại, also known as Vietnamese meatballs, is traditionally made by mincing or grinding pork together with jicama, onion, garlic, pepper, sugar, and fish sauce. This mixture is hand-shaped into balls before being poached or steamed. The meatballs are then drenched with a flavorful tomato sauce. It is the Vietnamese version of the Italian dish meatballs with marinara sauce but using Asian spices and seasoning.

These savory Vietnamese pork meatballs are typically served as street food, in Vietnamese restaurants, or at home with a variety of accompaniments such as French baguettes, lettuce leaves, rice vermicelli noodles, and pickled vegetables. It is also a popular banh mi filling. The result is a savory dish that is both tasty and convenient – perfect for busy commuters on the go!
What Does Xíu Mại Taste Like?
These pork meatballs are juicy and tender, with a mild flavor that is enhanced by the addition of jicama, onion, and garlic. The addition of vegetables in the meatballs not only provides a subtle crunch but helps to keep it moist and flavorful. Each bite is filled with an umami-rich and a slightly sweet taste from the fish sauce, sugar, and tomato paste.
Ingredients Needed For Xíu Mại
FOR THE MEATBALLS
- Ground pork: buy it at your local grocery store or Asian supermarket. If they do not carry it, you can ground your own pork by using pork shoulder or pork butt, sometimes pork loin can be used too. You can also substitute ground pork for other ground meats such as ground chicken, ground turkey, or ground beef.
- Jicama: finely chopped or diced (to save time, you can also use a food processor to chop). It is healthy, and it gives the meatballs a subtle crunch. You can find this at any local grocery store or Asian grocery store. If you have trouble finding it, substitute it with water chestnuts, daikon, or carrots.
- Aromatics: yellow onion (or shallots) and garlic cloves. Used for flavoring.
- Fish sauce: choose a high-quality fish sauce since this is what gives the meatballs most of their flavoring. Popular brands include Red Boat or 3 crabs.
- Seasoning: salt, pepper, sugar - used for flavor.
FOR THE SAUCE
- Sesame oil: used for flavor and aroma.
- Garlic cloves: used as aromatic.
- Tomatoes: Choose tomatoes with low seed content and low water content so that your sauce isn't thin and watery. Some great choices are Roma tomatoes or San Marzano tomatoes. Another option is to squeeze out some of the seeds before cooking them. Canned tomatoes also work.
- Tomato paste: Use tomato paste from a can or tube.
- Chicken bouillon powder or Better Than Bouillon Chicken Base.
- Seasoning: fish sauce, sugar, black pepper.
- Water: to thin out the sauce.
- Cornstarch: used to thicken the tomato sauce.
Serve it with French baguette slices or rice.
Substitutions
- Traditionally, ground pork is used for this recipe, but you can also substitute it with ground chicken or ground beef.
- If you can't find jicama at the store, substitute it with canned water chestnuts. Daikon or carrots might also work.
- Instead of yellow onions, substitute it with green onions (spring onions) or shallots
- If you do not have fish sauce, you can substitute it with soy sauce and vinegar.
- If you do not have Chicken bouillon powder or Better Than Bouillon Chicken Base, substitute the water with chicken broth.
- If you do not have sesame oil, substitute it with vegetable oil or olive oil.
- Instead of fresh tomatoes, use canned tomatoes.
- If you do not have cornstarch, substitute it with potato starch or all-purpose flour.
- Variations:
- add wood ear mushrooms for a subtle crunch.
- add chopped rice vermicelli noodles for another texture
How to Make it
FORM THE MEATBALLS
Step One: In a skillet, on medium-high heat, add oil and yellow onions. Let it cook for 1-2 minutes until fragrant. Add jicama and garlic, and cook for another 1 minute. Let this mixture cool completely.
Step Two: In a medium bowl, mix together ground pork, jicama, yellow onion, garlic, fish sauce, salt, ground pepper, sugar, and cornstarch. Use your hands to form 1½ inch balls, the size of a golf ball, for the rest of the pork mixture. This will yield around 10 savory meatballs.
Step Three: COOK THE MEATBALLS (3 OPTIONS)
- Steam. Fill the steamer with 2 cups of water. Place the meatballs in the steamer and cook for 6 minutes.
- Bake. Arrange the meatballs on a greased tray, leaving some room in between each one. Bake at 350°F for 15 minutes.
- Air Fry. Arrange the meatballs in the air fryer, and air fry them at 350°F for 6 minutes.
MAKE THE TOMATO SAUCE
Step Four: In a saucepan, on medium heat, add sesame oil and garlic. Cook for 20-30 seconds until fragrant. Add water, chicken bouillon powder, tomatoes, tomato paste, fish sauce, sugar, and ground pepper. Stir until well combined. Cover the pot. Bring it to a boil and then turn down the heat and let slowly simmer for 20 minutes.
THICKEN THE TOMATO SAUCE AND ADD MEATBALLS
Step Five: In a small bowl, mix together 2 teaspoons of cornstarch and 2 teaspoons of water. Add this mixture to the tomato sauce to thicken it. (Optional: If you want to get rid of the tomato chunks, use a blender or an immersion blender. Do a few quick pulses to get rid of the chunks).
Step Six: Add the meatballs to the tomato sauce. Ladle the sauce over the meatballs and let the sauce simmer for about 2-3 minutes so that the meatballs soak up the flavors of the sauce.
Serve with slices of French baguette.
Helpful tips
- Sweat the onions and jicama and let them cool completely before adding them to the meatball mixture. The vegetables will be uncooked if you skip this step.
- Do not overwork the meatball mixture when mixing the ingredients together. This will cause it to be dense.
- Adjust the sauce to your liking. If you prefer a thicker sauce, use less water and thicken it with a cornstarch slurry. If you need more cornstarch, use a 1-to-1 ratio of cornstarch and water. If you prefer a thinner sauce, add more water.
- If you do not want tomato chunks in your sauce, use a blender or an immersion blender to puree the sauce.
- Taste and season in the end. The flavors will need time to develop, and some of the liquid will evaporate, so you won't know what it will truly taste like until the end. Add more sugar, fish sauce, or ground pepper, if needed.
How to Serve Xíu Mại
Vietnamese meatballs (Xíu Mại) are commonly served with a crispy french baguette. This combination of flavors is quite popular in the country, especially in the southern region.
To make the perfect dipping experience, start by lightly toasting the baguette slices until they hold a slight crunch on the outside and are still slightly soft in the middle. Then, scoop out a spoonful of meatballs and sauce and place it on top of the toasted baguette slices.
Bánh mì xíu mại is another way to eat this. The xíu mại meatballs are stuffed into a Vietnamese baguette and accompanied by pickled vegetables such as daikon, carrots, and onions. The combination of flavors from the salty-sweet pork meatballs in a flavorful tomato sauce with crunchy pickled vegetables, and fresh herbs such as cilantro, mint, or basil creates an unforgettable flavor.
Another great way to serve it is over white rice or rice noodles.
Frequently Asked Questions (FAQ)
To thicken the sauce, use a cornstarch slurry that consists of a 1-to-1 ratio of cornstarch and water.
If you prefer a thinner sauce, add more water. Start with ¼ cup at a time. Adjust the seasoning at the end.
Use a potato masher to mash up some of the tomato chunks. You can also use a blender or an immersion blender and blend it to your liking.
How to store leftovers
Refrigerate
The best way to store leftover meatballs is to let them cool completely and then keep them in the refrigerator in an airtight container. It will last 3-5 days if properly stored.
Freeze
To make these last longer, they can also be stored in the freezer for up to 6 months. When storing it in the refrigerator or freezer, it's a good idea to label and date the container so that you know when it was stored and how long it has been in the refrigerator or freezer.
Reheat
If it was in the freezer, let it thaw in the fridge overnight before reheating. When you're ready to eat it, heat it over medium-low heat for 8-10 minutes, stirring occasionally. Use a thermometer to check the temperature of your sauce and meatballs and make sure it's at least 165°F before serving.
You can also reheat the xíu mại in the microwave. Place the meatballs in a shallow dish with some of the sauce and cover it with plastic wrap or wax paper. Heat it in the microwave for 1-2 minutes, then stir and heat again for an additional 30 seconds to 1 minute, or until they are heated through.
Vietnamese Meatballs (Xíu Mại)
Ingredients
For the Meatballs
- 1 pound ground pork
- ¾ cup jicama, finely diced
- ½ yellow onion, finely diced
- 3 garlic cloves, minced
- ½ tablespoon fish sauce
- ½ teaspoon salt
- ½ teaspoon ground black pepper
- 1 teaspoon sugar
For the Sauce
- ½ tablespoon sesame oil
- 2 garlic cloves, minced
- 1 ½ cups water
- 2 teaspoon chicken bouillon powder or Better Than Bouillon Chicken Base
- 3 tomatoes, diced
- 3 tablespoons tomato paste
- ½ tablespoon fish sauce
- 1 tablespoon sugar
- ½ teaspoon ground black pepper
- 2 teaspoon cornstarch
- 2 teaspoon water
Serve With
- French baguettes, or white rice
Instructions
Form the Meatballs
- In a skillet, on medium heat, add oil and yellow onions. Let it cook for 1-2 minutes until fragrant. Add jicama and garlic, and cook for another 1 minute. Let this mixture cool completely.
- In a medium bowl, mix together ground pork, jicama, yellow onion, garlic, fish sauce, salt, ground pepper, sugar, and cornstarch. Use your hands to form 1½ inch balls, the size of a golf ball, for all of the pork mixture. About 10 meatballs.
Cook the Meatballs (3 Options)
- Steam. Fill the steamer with 2 cups of water. Place the meatballs in the steamer and cook for 6 minutes.
- Bake. Arrange the meatballs on a greased tray, leaving some room in between each one. Bake at 350°F for 15 minutes.
- Air Fry. Arrange the meatballs in the air fryer, and air fry them at 350°F for 6 minutes.
Make the Tomato Sauce
- In a saucepan, on medium heat, add sesame oil and garlic. Cook for 20-30 seconds until fragrant. Add water, chicken bouillon powder, tomatoes, tomato paste, fish sauce, sugar, and ground pepper. Stir until well combined. Cover the pot. Bring it to a boil and then turn down the heat and let slowly simmer for 20 minutes.
Thicken the Tomato Sauce and Add Meatballs
- In a small bowl, mix together 2 teaspoons of cornstarch and 2 teaspoons of water. Add this mixture to the tomato sauce to thicken it. (Optional: If you want to get rid of the tomato chunks, use a blender or an immersion blender)
- Add the meatballs to the tomato sauce. Ladle the sauce over the meatballs and let the sauce simmer for about 2-3 minutes so that the meatballs soak up the flavors of the sauce.
- Serve with slices of French baguette bread.
Notes
-
- Sweat the onions and jicama and let them cool completely before adding them to the meatball mixture. The vegetables will be uncooked if you skip this step.
-
- Do not overwork the meatball mixture when mixing the ingredients together. This will cause it to be dense.
-
- Adjust the sauce to your liking. If you prefer a thicker sauce, use less water and thicken it with a cornstarch slurry. If you need more cornstarch, use a 1-to-1 ratio of cornstarch and water. If you prefer a thinner sauce, add more water.
-
- If you do not want tomato chunks in your sauce, use a blender or an immersion blender to puree the sauce.
Nutrition
Have you tried this recipe? Leave a ⭐️ rating and comment below to let me know what you think!
Mai says
This recipe is simple and tasty. I've made it a few times already for banh mi xiu mai.
Dannii says
We love meatballs, but have never tried anything like this. They were SO good and I will definitely be making them again.
Ieva says
Great recipe! Both myself and my husband really enjoyed them, especially the sauce! A great way to change up your dinner menus! Would highly recommend it.
Amanda Wren-Grimwood says
These look so delicious. We love Vietnamese food so they are on the menu for Saturday night.
cyndy says
These were full of flavor. I made the recipe for dinner tonight and my family loved it - will absolutely make this again soon.
Holley says
I've never had a meatball like this before! These flavors are absolutely amazing!
TAYLER ROSS says
I made these meatballs for dinner last night and my whole family loved them! Thanks so much for sharing the recipe!
Helen says
These look great - what a terrific set of flavours.
katherine says
I love all the layers of rich flavors in the sauce and in the meatballs!
Kushigalu says
Love how flavourful and delicious these meatballs are thanks for the recipe