VegetarianBanhMi.comVegetarian Banh Mi
Vegan Banh Mi Recipes

Vegan Xiu Mai Banh Mi: Tofu Mushroom Meatballs in Tomato

Make 16 tender tofu and mushroom meatballs in a garlicky tomato sauce, the Dalat breakfast classic made vegan, and serve 4 with crusty banh mi to dip.

Overhead view of a sunny balcony breakfast table with bowls of tofu meatballs in red tomato sauce, crusty Vietnamese baguettes split lengthwise, scallions, two people reaching in.

Short answer: Mix crumbled, squeezed tofu with finely chopped sautéed mushrooms, jicama for crunch, panko, starch, garlic, shallot, soy sauce and pepper. Shape 16 balls, steam them for 12 minutes, then simmer them in a quick garlicky tomato sauce for 10 minutes. Serve the meatballs and sauce in small bowls with warm baguettes for dipping, or tuck them into the bread with pickles and herbs. It serves 4 and takes about 70 minutes.

Bánh mì xíu mại (meatball banh mi) is a breakfast closely associated with Đà Lạt, the cool highland city, where it is traditionally served as a bowl of soft meatballs in a light tomato broth with a crusty baguette on the side for dipping. In Saigon you also find it stuffed directly into the bread. The vegetarian version, xíu mại chay, swaps pork for tofu and mushrooms, and when it is done well it is every bit as comforting: tender, savory balls with a little crunch, and a bright tomato sauce to soak up with bread.

Ingredients for 16 meatballs and sauce

IngredientMetricUSNotes and substitutes
Firm tofu300 g10 1/2 ozExtra-firm also works
Cremini or shiitake mushrooms, finely chopped150 g5 ozAny meaty mushroom
Jicama (củ sắn), finely diced60 g1/2 cupCanned water chestnuts or raw kohlrabi
Panko breadcrumbs40 g2/3 cupDry breadcrumbs or gluten-free crumbs
Potato starch or cornstarch25 g3 tbspTapioca starch
Garlic, minced10 g2–3 cloves—
Shallot, minced30 g1 small—
Soy sauce30 ml2 tbspTamari
Mushroom seasoning3 g1/2 tspSalt
Black pepper1 g1/2 tsp—
Sauce: ripe tomatoes, chopped500 gabout 4 mediumOne 400 g (14 oz) can chopped tomatoes
Sauce: tomato paste15 g1 tbsp—
Sauce: vegetable stock or water250 ml1 cup—
Sauce: sugar, soy sauce8 g, 15 ml2 tsp, 1 tbsp—

To serve: 4 baguettes (20–25 cm / 8–10 inches), scallions, cilantro, black pepper, sliced chili, and optionally pickled carrot and daikon and cucumber if you are stuffing the bread.

Step 1: Make the meatball mixture (25 minutes)

Crumble the tofu into a clean kitchen towel, gather it up and squeeze hard over the sink until no more water drips. This is the single most important step: wet tofu makes meatballs that fall apart in the sauce. You should end up with about 230–250 g of dry, crumbly tofu.

Heat 1 tablespoon oil in a pan over medium-high heat and cook the chopped mushrooms with a pinch of salt for 6–8 minutes, until their liquid has evaporated and they start to brown. Add half the garlic and shallot for the last minute. Let cool for a few minutes. In a bowl, combine the tofu, mushrooms, jicama, panko, starch, remaining garlic and shallot, soy sauce, mushroom seasoning and pepper. Knead with your hands for a minute until the mixture holds together when squeezed. If it is crumbly, add a tablespoon of water; if sticky, add a tablespoon more panko.

Step 2: Shape and steam (20 minutes)

Wet your hands and roll the mixture into 16 balls of about 35 g each, roughly the size of a walnut in its shell. Compact them firmly. Set them on a plate lined with parchment and steam over boiling water for 12 minutes. Steaming sets the starch so the balls hold their shape in the sauce, and it is how many cooks make xíu mại in Vietnam.

If you prefer a golden crust, after steaming brown the balls lightly in a nonstick pan with 1 tablespoon oil for 3–4 minutes, rolling them around. Or skip the steamer and bake them on an oiled tray at 200°C (400°F) for 20 minutes, turning halfway; they will be firmer and drier.

Step 3: Simmer in tomato sauce (20 minutes)

In a wide saucepan, heat 2 tablespoons oil over medium heat and fry the remaining shallot (mince an extra one if you like) and 2 cloves garlic until fragrant, about 1 minute. Add the tomato paste and stir 30 seconds, then add the chopped tomatoes and cook 5 minutes, mashing them with a spoon. Pour in the stock, sugar and soy sauce, bring to a simmer and cook 5 minutes more.

Lower the meatballs gently into the sauce and simmer, partly covered, for 10 minutes, spooning sauce over them. The sauce should be loose and brothy rather than thick, the Đà Lạt style, so add a little water if needed. Taste and adjust with salt, sugar and pepper; the sauce should be savory with a gentle sweetness.

Step 4: Two ways to serve

  • Đà Lạt style: ladle 4 meatballs and plenty of sauce into each bowl, scatter scallions, cilantro and pepper, and serve a warm baguette on the side for tearing and dipping. This is the classic breakfast format.
  • Stuffed banh mi: split a warm baguette, spoon in 3–4 meatballs and a little thickened sauce, lightly crush them, and top with cucumber, pickled carrot and daikon, cilantro and chili. Thicken the sauce for this version by simmering 5 minutes longer, so it does not soak the bread.

Either way, the bread should be very crisp; re-crisp it at 200°C (400°F) for 5 minutes. Our bread section explains how to choose a roll that stays crisp against a wet filling. For bigger groups, this dish scales easily and is a crowd-pleaser on a brunch table; see our parties and gatherings ideas.

Common mistakes and fixes

  • Meatballs fall apart in the sauce. The tofu was not squeezed enough, or you skipped steaming. Squeeze harder and add 1 tablespoon more starch.
  • Dense, heavy texture. Too much starch or panko. Keep to the amounts and do not overwork the mixture.
  • Bland meatballs. Mushrooms were not browned, or seasoning was light. Brown the mushrooms properly and taste a small piece of mixture, microwaved for 20 seconds, before shaping.
  • Sauce too sour. Tomatoes vary; add sugar half a teaspoon at a time.
  • No jicama available. Water chestnuts are the best swap, or leave it out; you lose crunch, not flavor.

Make ahead and nutrition

For a breakfast for 4, the most efficient order is to make the meatball mixture and sauce the evening before, shape and steam in the morning while the sauce reheats, and warm the bread in the last five minutes. The mixture keeps well overnight in the fridge, covered; it actually becomes easier to shape as the panko hydrates. If you are cooking for more people, the recipe doubles without changes, though you will need to steam in two batches or use a two-tier steamer. A rice cooker with a steaming basket also works for a small batch of 8 balls.

The steamed meatballs keep 3 days in the fridge and freeze well for up to 2 months; freeze them on a tray, then bag them. The sauce keeps 4 days. Reheat together and simmer gently for 5–8 minutes. For weekday breakfasts, steam a batch on Sunday and you can have bowls ready in 10 minutes.

Nutrition depends on the tofu you use. USDA FoodData Central lists firm tofu made with calcium sulfate at about 144 kcal and about 17 g protein per 100 g. With 300 g tofu spread over 4 servings plus mushrooms and panko, each portion of 4 meatballs provides roughly 14–16 g protein before bread, and an 80 g baguette adds around 9 g, based on USDA figures for French bread. Tomatoes contribute vitamin C and fiber. For a fuller picture, see our plant-based nutrition section.

Sources

  • USDA FoodData Central – fdc.nal.usda.gov (tofu, firm; tomatoes; bread, French or Vienna)
  • Vietnam National Authority of Tourism – vietnam.travel (Đà Lạt and regional food)
  • USDA Food Safety and Inspection Service – fsis.usda.gov (freezing and reheating leftovers)

Frequently asked questions

What is bánh mì xíu mại?

It is a Vietnamese breakfast of soft meatballs in a light tomato sauce, eaten with a baguette for dipping or stuffed inside it. It is especially associated with Đà Lạt. The vegetarian version uses tofu and mushrooms instead of pork.

Can I skip the steaming step?

You can bake the meatballs at 200°C (400°F) for 20 minutes instead. Putting raw meatballs directly into the sauce is risky, as they tend to break apart before they set.

How do I make them gluten-free?

Use gluten-free breadcrumbs or crushed rice crackers instead of panko, tamari instead of soy sauce, and check your mushroom seasoning label. Serve with a gluten-free roll or with rice.

Can I use store-bought vegan meatballs?

Yes, for a quick version simmer them in the tomato sauce for 8–10 minutes. Homemade tofu and mushroom meatballs are softer and closer to the Vietnamese texture, which is tender rather than firm.

What drink goes with this breakfast?

In Vietnam it is often eaten with a hot or iced coffee or soy milk. A strong black coffee or a lightly sweetened soy milk both balance the savory tomato sauce.

A Vietnamese breakfast you can cook anywhere

Vegan xíu mại turns tofu and mushrooms into a cozy, dunkable breakfast for four. If you land in Ho Chi Minh City, pair your banh mi research with a stop at Bánh Mì XANH, a fully vegan chain with 5 central shops open 24/7, also serving nut-milk coffee from 45,000đ.

Explore the Bánh Mì XANH menu · 24/7 hotline / Zalo +84 923 183 183

Related articles

Questions or tips? Write to us

Found a great banh mi stall, or have a question? Leave a note and we'll get back to you.