Quick Recipe Version (TL;DR)
Quick Ingredients
- 1 medium carrot (100 g) + 1 cup daikon (150 g), matchsticked
- 1 cup unseasoned rice vinegar + 1 cup water + 1/2 cup sugar + 2 tsp kosher salt
- 1 lb (450 g) ground pork; 1 cup grated jicama (150 g), well squeezed
- 1/2 cup panko; 2 tbsp milk; 1 large egg
- 3 garlic cloves; 2 scallions; 2 tbsp fish sauce; 1 tbsp light soy sauce; 1 tsp sugar; 1/2 tsp black pepper
- 1 tbsp neutral oil; 1 large shallot (or 1/2 small onion); 2 garlic cloves
- 2 tbsp tomato paste; 1 can (14.5 oz/400 g) crushed tomatoes; 1 cup chicken broth or water
- 1 tbsp fish sauce; 1 tsp sugar; pinch chili flakes (optional)
- 4 small baguettes; 4 tbsp mayonnaise; 1 small cucumber; 1 cup cilantro sprigs; 1–2 jalapeños
- Optional: 4 tbsp pâté; Maggi/soy for finishing
Do This
- 1. Pickle: Dissolve vinegar, water, sugar, salt; add carrot and daikon. Let stand 30 minutes.
- 2. Panade: Soak panko in milk. Grate and squeeze jicama dry.
- 3. Meatballs: Mix pork, jicama, panade, egg, garlic, scallions, fish sauce, soy, sugar, pepper. Shape 16 balls.
- 4. Sauce: Sauté shallot and garlic in oil. Stir in tomato paste, tomatoes, broth, fish sauce, sugar; simmer 10 minutes.
- 5. Poach: Nestle meatballs in sauce; simmer gently 10–12 minutes until 160°F; reduce sauce until glossy.
- 6. Bread: Warm baguettes at 375°F/190°C for 5–8 minutes; split and spread with mayo (and pâté, if using).
- 7. Build: Add 4 meatballs with sauce; top with cucumber, drained pickles, cilantro, jalapeño; finish with a few drops of Maggi/soy.
Why You’ll Love This Recipe
- Classic Vietnamese flavors: sweet-tangy pickles, savory tomato-poached meatballs, and fresh herbs.
- Ultra-tender xíu mại thanks to jicama and a quick panade that keep the meat juicy.
- Weeknight-friendly: pickles marinate while you simmer the sauce and cook the meatballs.
- Make-ahead components for easy assembly and irresistible, crackly baguette crunch.
Grocery List
- Produce: Carrot, daikon, jicama, garlic, shallot or onion, scallions, cucumber, cilantro, jalapeños
- Dairy: Milk (2 tbsp), 1 large egg
- Pantry: Ground pork, panko, rice vinegar, sugar, kosher salt, black pepper, fish sauce, light soy sauce, tomato paste, crushed tomatoes, chicken broth, neutral oil, mayonnaise, optional pâté, optional chili flakes, optional Maggi/soy
Full Ingredients
Quick Pickled Carrot–Daikon (Đồ Chua)
- 1 medium carrot (about 100 g), cut into thin matchsticks
- 1 cup daikon radish (about 150 g), cut into thin matchsticks
- 1 cup (240 ml) unseasoned rice vinegar
- 1 cup (240 ml) water
- 1/2 cup (100 g) granulated sugar
- 2 tsp kosher salt
Pork & Jicama Meatballs (Xíu Mại)
- 1 lb (450 g) ground pork, 80–85% lean
- 1 cup (150 g) finely grated jicama, squeezed very dry
- 1/2 cup (30 g) panko breadcrumbs
- 2 tbsp (30 ml) milk (or water)
- 1 large egg
- 3 garlic cloves, finely minced
- 2 scallions, finely sliced
- 2 tbsp fish sauce
- 1 tbsp light soy sauce
- 1 tsp sugar
- 1/2 tsp freshly ground black pepper (plus a pinch of white pepper, optional)
Tomato Sauce for Xíu Mại
- 1 tbsp neutral oil (canola, grapeseed, or avocado)
- 1 large shallot (or 1/2 small yellow onion), finely diced
- 2 garlic cloves, minced
- 2 tbsp tomato paste
- 1 can (14.5 oz/400 g) crushed tomatoes (or tomato passata)
- 1 cup (240 ml) low-sodium chicken broth or water
- 1 tbsp fish sauce
- 1 tsp sugar
- Pinch red pepper flakes (optional)
- Kosher salt, to taste
For Assembly
- 4 small Vietnamese-style baguettes (or 2 French demi-baguettes halved), about 8–10 inches each
- 4 tbsp mayonnaise (Kewpie recommended)
- Optional: 4 tbsp pâté
- 1 small seedless cucumber, thinly sliced lengthwise or into batons
- 1 cup loosely packed cilantro sprigs
- 1–2 jalapeños or Thai chiles, thinly sliced
- Maggi seasoning or light soy sauce, for finishing (optional)

Step-by-Step Instructions
Step 1: Quick-pickle the carrot and daikon
In a medium bowl, whisk rice vinegar, water, sugar, and salt until fully dissolved. Add the carrot and daikon matchsticks, pressing them down so they’re submerged (use a small plate as a weight if needed). Let stand at room temperature for 30 minutes while you prepare the meatballs and sauce. Drain well before assembling; reserve the brine for storing leftovers.
Step 2: Make the panade and prep the jicama
In a small bowl, stir the panko with the milk to form a moist paste; set aside for 5 minutes. Finely grate the jicama on the small holes of a box grater, then gather it in a clean towel and squeeze firmly to remove as much moisture as possible. This keeps the meatballs tender but not watery.
Step 3: Mix and shape the meatballs
In a large bowl, combine the ground pork, squeezed jicama, panade, egg, garlic, scallions, fish sauce, soy sauce, sugar, and black pepper. Mix with a fork or your hand until the mixture turns sticky and cohesive, 45–60 seconds. With damp hands, form 16 meatballs (about 1 1/2 tablespoons or 30 g each). Refrigerate briefly while you start the sauce.
Step 4: Build the tomato sauce base
Heat the oil in a wide skillet or saucepan over medium heat. Sauté the shallot and garlic with a pinch of salt until translucent and fragrant, 2–3 minutes. Stir in the tomato paste and cook until darkened, 1 minute. Add crushed tomatoes, broth, fish sauce, sugar, and chili flakes (if using). Bring to a gentle simmer and cook uncovered for 10 minutes to meld flavors.
Step 5: Poach the meatballs in the sauce
Nestle the meatballs into the simmering sauce in a single layer. Reduce heat to medium-low to maintain a gentle simmer (not a vigorous boil). Cover and cook for 6 minutes, then uncover, turn the meatballs, and cook another 4–6 minutes, until the centers reach 160°F/71°C. Remove the lid and simmer 2–4 minutes more if needed to thicken the sauce to a spoon-coating consistency. Taste and adjust salt or fish sauce.
Step 6: Warm the baguettes and prep garnishes
While the meatballs finish, heat the oven to 375°F/190°C. Warm the baguettes directly on the rack until crisp outside and fluffy inside, 5–8 minutes. Split lengthwise without cutting all the way through. Drain the pickles well. Slice the cucumber and jalapeños and pluck cilantro sprigs.
Step 7: Assemble the Banh Mi Xiu Mai
Spread each warm baguette with 1 tablespoon mayonnaise (and 1 tablespoon pâté, if using). Add 4 meatballs per sandwich and spoon over 2–3 tablespoons of tomato sauce. Layer on cucumber, a generous handful of drained carrot–daikon pickles, jalapeño, and cilantro. Finish with a few drops of Maggi or soy sauce if you like. Close, press gently, and serve immediately while the bread is still crackly.
Pro Tips
- Squeeze the jicama very dry for meatballs that are tender yet hold their shape.
- Keep the sauce at a gentle simmer; a hard boil can make meatballs tough or cause them to break.
- Warm the bread right before serving—heat reactivates the crust for that signature crackly bite.
- Drain pickles well so the sandwich stays saucy but not soggy.
- For extra depth, add 1 teaspoon butter to the sauce off heat for a glossy finish.
Variations
- Lighter protein: Use ground chicken or turkey (93% lean). Add 1 tablespoon oil to the meat mixture to boost juiciness.
- Spicy: Stir 1–2 teaspoons chili-garlic sauce into the tomato sauce, and add extra sliced chiles to finish.
- Bowl it: Serve meatballs and sauce over jasmine rice with all the banh mi toppings for a gluten-free option (use tamari).
Storage & Make-Ahead
Pickles keep up to 2 weeks in the fridge submerged in brine. Meatballs and sauce can be refrigerated up to 4 days; reheat gently on the stove with a splash of water. Freeze cooked meatballs in sauce for up to 2 months; thaw overnight and rewarm. Baguettes are best day-of—revive at 375°F/190°C for 4–6 minutes. Prep garnishes up to 1 day ahead and store separately.
Nutrition (per serving)
Approximate per sandwich: 760 calories; 35 g fat; 74 g carbohydrates; 33 g protein; 4 g fiber; 14 g sugars; 1650 mg sodium. Values will vary based on bread size, condiments, and seasoning.
