This Vietnamese Meatball Banh Mi (Banh Mi Xiu Mai) makes a delicious and filling breakfast or main meal. The pork meatballs are served with a flavorful tomato sauce and crispy banh mi (Vietnamese baguette).
What is Vietnamese Meatball Banh Mi (Banh Mi Xiu Mai)
This is the second Vietnamese banh mi recipe on the blog, after my Slow Cooker Pulled Pork Banh Mi. Banh mi means baguette made from wheat in Vietnamese. The crust is thinner and crispier, and the white crumb is much lighter and airier than Western baguettes.
Vietnamese Meatball Banh Mi (Banh Mi Xiu Mai) is a Southern Vietnamese dish. It consists of bouncy and juicy pork meatballs (called xiu mai) in a flavorful tomato sauce. People would dip a piece of banh mi into the sauce and then eat it with a piece of the meatball. One bite like that will give you a lot of flavors and textures.
There isn’t just one way to make this dish, like with many other Vietnamese dishes :). My version ensures you can put it together in a short amount of time (around 30 minutes), with a minimum number of cooking steps while achieving a delicious and authentic taste.
To make the meatballs (xiu mai), the main ingredients you will need are ground pork, onion, panko breadcrumbs and milk. Try to avoid using ground pork that is too lean because it will make the meatballs too dry.
Traditionally, xiu mai meatballs contain some finely diced jicama. I use the combination of onion, panko and milk instead to make the meatballs flavorful, soft and juicy.
I prefer Japanese panko breadcrumbs over Western breadcrumbs because it is much lighter and fluffier. As for milk, any types, dairy or dairy-free such as almond milk, will do.
You will also need to make the tomato sauce, which requires ripe tomatoes, aromatics and common Asian seasonings such as fish sauce and soy sauce.
And don’t forget the bread :). You can buy plain banh mi from almost any shops selling banh mi sandwich. If it isn’t an option, it is fine to use regular baguettes from your local bakeries.
How to Make Vietnamese Meatball Banh Mi (Banh Mi Xiu Mai)
There are two main steps here: making the meatballs and making the tomato sauce. Both steps are easy and straightforward.
First, you will need to combine all ingredients for the meatballs, mix and knead for 2-3 minutes, then form into meatballs. I like to make mine slightly large, a little over 1 1/2 tablespoons of filling for each meatball). The meatballs will then be steamed until almost cooked through because we will finish cooking them in the tomato sauce.
The sauce is made simply by sautéing tomatoes and then simmering with seasonings until all flavors meld together. Some places in Vietnam keep the sauce very thin, almost like a broth. Feel free to make the sauce as thin or as thick as you like.
You can find detailed instructions with step by step photos in the recipe card below.
Quick tip: If you have leftover, you can warm it and add water or chicken stock to make a very yummy broth for a delicious bowl of meatball noodles :).
I’d love to hear what you think about this dish, so please feel free to leave a comment. New recipes are added every week so let’s connect on Facebook, Pinterest and Instagram for the latest updates. You can find my collection of Vietnamese recipes here.
Vietnamese Meatball Banh Mi (Banh Mi Xiu Mai)
For the Meatballs
- 1 small onion, diced (about 2/3 cup diced onions)
- 1/2 tablespoon minced garlic
- 10 oz ground pork
- 3/8 teaspoon salt
- 1/3 cup panko breadcrumbs
- 1/4 cup milk
- black pepper
- olive oil
For the Tomato Sauce
For the Cornstarch Slurry (optional)
- 1/2 teaspoon cornstarch
- 1/2 tablespoon water
- 2 banh mi or baguettes, lightly toasted
- thinly sliced scallions (for garnishing)
- Place a sauté pan over medium heat. Add some olive oil, and then add diced onions and garlic. Sauté for about 3-4 minutes until translucent to develop sweetness. Be careful to not let them burn. Set aside to cool.
- In a mixing bowl, add ground pork, cooked onions, other ingredients for the meatballs and plenty of freshly cracked black pepper. Mix thoroughly for 2-3 minutes until the mixture is well combined and sticky.
- Use about a little over 1 1/2 tablespoons of filling to form each meatball. Place them into a heatproof plate. Place the plate in a steamer (or a large pan/pot), and steam until the meatballs are almost cooked through, about 5-6 minutes. Transfer the meatballs to a plate and reserve the meat juice released while steaming.
- Place the sauté pan on medium - medium high heat. Add some olive oil, and then add shallot and garlic. Sauté for a few seconds until fragrant. Add diced tomatoes, stir and cook until the tomatoes start to soften and release juice.
- Add meat juice plus additional water or chicken stock so that we add about 2/3 cup of additional liquid to the tomato sauce. Add tomato paste, fish sauce, soy sauce, black pepper, stir and bring to a simmer. Lower heat, cover and let the sauce simmer gently for a few minutes or until flavors meld together. Adjust seasonings to taste.
- Add meatballs to the pan. Cover and continue to simmer for a couple of minutes, flip the meatballs once, until they are cooked through and lightly coated with the sauce.
- Transfer the meatballs to serving plates/bowls. If you want to thicken the tomato sauce, mix together cornstarch and water to make the cornstarch slurry. Then slowly add cornstarch slurry while stirring the sauce to thicken it. Only add as much as you need to thicken the sauce to your liking.
- Add the tomato sauce to the serving plates/bowls. Garnish with scallions and serve immediately with banh mi or baguettes.