Soups & Stews
This bakso soup recipe delivers the comforting, aromatic experience of Indonesia's most beloved comfort food—tender meatballs floating in a rich, spiced broth. The secret lies in the meatballs: a perfect balance of ground meat, egg, and traditional fillers like tapioca starch, which gives them that signature chewy texture.
I've perfected this version to stay true to the original while making it accessible for home cooks, with a broth so flavorful it'll have everyone asking for seconds.
What sets this recipe apart is the two-stage cooking process: first boiling the meatballs to set their shape, then frying them to achieve that irresistible crispy exterior. The broth, simmered with aromatic spices like coriander and cinnamon, carries layers of warmth that penetrate every bite.
This isn't just soup—it's a full meal with chewy noodles, fresh herbs, and optional toppings like fried shallots or lime wedges to brighten each spoonful.
The result is a bowl of bakso soup that's hearty yet balanced, with meatballs that stay tender yet hold their shape, and a broth so rich it coats every noodle. The aroma alone—spiced, savory, and just slightly sweet—will transport you to a bustling Indonesian warung.
Whether you're serving a family dinner or meal prepping for the week, this recipe delivers restaurant-quality comfort food at home.
For extra depth, consider adding a splash of soy sauce to the broth or a sprinkle of chili flakes for heat. The beauty of bakso soup lies in its adaptability—this version stays true to tradition while inviting your own personal touches. Let's get cooking!
Ingredients for bakso soup
Grab these ingredients and you'll have restaurant-style bakso soup in one pot.
| Ingredient | Amount | Notes |
|---|---|---|
| Ground Beef (80% lean) 🥩 | 1 ½ lb | Use finely ground for texture |
| Large Eggs 🥚 | 2 whole | Room temperature for best binding |
| Tapioca Starch 🌾 | ¼ cup | For signature chewy texture |
| Green Onions 🧅 | ¼ cup | Finely chopped, white and green parts |
| Garlic Cloves 🧄 | 4 cloves | Minced for aromatic base |
| Soy Sauce 🍶 | ½ cup | Light or dark variety |
| Vegetable Oil 🫒 | ½ cup | For frying meatballs |
| Chicken Broth 💧 | 6 cups | Homemade or quality store-bought |
| Coriander Seeds 🌿 | 1 tsp | Toasted for deeper flavor |
| Cinnamon Sticks 🍃 | 2 whole | For aromatic broth |
| White Peppercorns 🌶️ | ½ tsp | Ground for subtle heat |
| Egg Noodles 🍜 | 8 oz | Fresh or dried, any width |
| Fresh Cilantro 🌿 | ¼ cup | Chopped for garnish |
| Lime Wedges 🍋 | 2 whole | For serving |
| Fried Shallots 🧅 | ¼ cup | Optional topping |
The ground beef is non-negotiable here—80% lean gives that perfect meaty texture without being too greasy. I always grab mine from Costco or the butcher section at Whole Foods because they grind it extra fine. Tapioca starch is the secret weapon for that signature chewy bite, and it's a must-have at any Asian market. For the green onions, grab a bunch and chop the whites and greens separately if you want to get fancy—though I usually just toss them all in. The soy sauce? Kikkoman light soy is my go-to, but any good-quality brand works.
No tapioca starch? Cornstarch at the same amount is a decent swap, though the texture won't be quite the same. Short on coriander seeds? Ground coriander at half the amount works in a pinch, but toasting whole seeds first makes all the difference. The broth is where the magic happens—if you're in a hurry, Swanson chicken broth is solid, but homemade is worth the extra effort. For the noodles, fresh is ideal (they cook faster), but dried works too—just check the package time. And if you can't find fried shallots, toasted sesame seeds add a nice crunch instead.
This soup tastes even better the next day—honestly, the flavors meld more overnight. Store leftovers in the fridge for 3-4 days or freeze for up to 3 months. I like to portion it into containers so I can grab a bowl for lunch all week. The meatballs reheat beautifully, though they might lose a little crispiness—just fry them again for 30 seconds to refresh. The broth can be made ahead too, so you're not stuck cooking on game day.
Why You'll Love This Recipe
- I swear by this trick: just mix the ground beef, egg, and tapioca starch—no fancy kneading. Roll them out, boil for 5 minutes, and you’ve got perfect little meatballs without the fuss. (Yes, even on a Tuesday night.)
- No-Fuss Dumplings: I swear by this trick: just mix the ground beef, egg, and tapioca starch—no fancy kneading. Roll them out, boil for 5 minutes, and you’ve got perfect little meatballs without the fuss. (Yes, even on a Tuesday night.)
- Garlic-Green Onion Magic: That crispy edge from the garlic and the bright green onions? It’s the secret weapon. The broth soaks up all the flavor, and suddenly, a simple beef soup feels like a restaurant-worthy bite. Honestly, the aroma alone makes the whole kitchen smell like comfort.
- Leftover Hero: This soup actually tastes better the next day. The meatballs soften just right, the broth deepens, and it’s the perfect cold-weather meal. I make a big batch on Sundays—it’s my go-to for busy mornings or lazy afternoons.
Step-by-step instructions for bakso soup
Let's make these chewy, flavorful meatballs and aromatic broth from scratch.
Prepare the Meatball Mixture
In a large mixing bowl, combine the 1.5 lb ground beef (80% lean) with the 2 whole large eggs at room temperature. Use your hands to gently mix until just combined—don't overwork the meat or it'll get tough. Add the 0.25 cup tapioca starch and mix again until evenly distributed throughout the meat.
Now fold in the 0.25 cup finely chopped green onions and 4 cloves minced garlic. Sprinkle the 0.5 cup soy sauce evenly over the mixture and mix one more time. The dough should hold together when pressed but still feel slightly sticky—this ensures the meatballs stay intact when cooking. Cover the bowl and refrigerate for 30 minutes to firm up slightly.
Shape and Fry the Meatballs
Heat 0.5 cup vegetable oil in a large skillet over medium-high heat until shimmering. Using your hands, roll the chilled meat mixture into 1-inch diameter balls—about 12-15 meatballs total. Fry them in batches to avoid overcrowding, cooking for 3-4 minutes per side until golden brown and cooked through.
You'll know they're ready when the outside is crispy and the internal temperature reaches 160°F. Transfer the cooked meatballs to a paper towel-lined plate to drain excess oil. Keep them warm while you prepare the broth—don't skip this step as they'll continue cooking in the hot broth.
Build the Aromatic Broth
In a large pot, combine the 6 cups chicken broth with the 1 tsp coriander seeds and 2 whole cinnamon sticks. Bring to a gentle simmer over medium heat and let it steep for 10 minutes to infuse the flavors. While it simmers, lightly toast the 0.5 tsp white peppercorns in a dry skillet for 1 minute until fragrant, then grind them coarsely.
Add the toasted peppercorns to the broth along with the 0.25 cup fried shallots. Stir in the 12-15 fried meatballs and let everything simmer together for 5 minutes to meld the flavors. The broth should be rich and fragrant with visible spices floating on top.
Cook the Noodles and Finish
Bring a separate pot of salted water to a rolling boil and cook the 8 oz egg noodles according to package instructions until al dente—usually 3-4 minutes. Drain and set aside. In the same pot, rinse with cold water to stop the cooking process immediately.
To serve, divide the cooked noodles among bowls. Ladle the hot meatball broth over the noodles, making sure each serving gets at least 3-4 meatballs. Garnish each bowl with 1 tablespoon chopped fresh cilantro and serve with the 2 whole lime wedges on the side. The acidity from the lime brightens the rich, spiced flavors perfectly.
Pro Tips For Making Bakso Soup
- Chill the Meat Mixture: I learned this the hard way—skipping the fridge time makes the dough sticky and hard to shape. Wrap the ground beef, egg, and tapioca mix in plastic and refrigerate for at least 30 minutes before forming balls. The starch binds better when cold, and your hands won’t stick to it like glue.
- Boil Water First: Don’t drop raw bakso into cold broth—shocking the meat causes uneven cooking and grayish centers. Bring water to a rolling boil, then add your balls in batches. The high heat seals the crust instantly, locking in flavor and texture. (Yes, even if you’re impatient like me.)
- Use Cold Tapioca Water: I was skeptical until I tried it: dissolve tapioca starch in cold water before mixing it into the meat. Warm water turns it gummy, and your dough will fall apart when shaping. Cold water keeps it smooth and easy to work with—no weird lumps in your soup.
- Toast the Garlic: Skip the raw garlic cloves in your broth—they’ll turn bitter and muddy the flavor. Mince them first, then dry-toast in a pan until golden (about 2 minutes). The aroma jumps from subtle to chef’s kiss, and it blends into the soup without overpowering. (Your future self will thank you.)
Dietary considerations for bakso soup
Vegetarian Adaptation
Swap the ground beef for a 1.5 lb mix of finely chopped mushrooms (shiitake + button) and 1 cup cooked lentils—both provide that meaty texture. Add 1 tbsp soy sauce and 1 tsp smoked paprika to mimic the umami depth.
For extra binding, include 1 tbsp aquafaba (chickpea brine) instead of eggs. Toast the mushrooms first to enhance their flavor, then pulse in a food processor until finely ground. 🌱
Gluten-Free Swaps
Replace the egg noodles with 8 oz gluten-free rice noodles (like Vital Brand or Thai Kitchen brands). For the meatballs, ensure your tapioca starch is certified gluten-free. If using store-bought broth, opt for a gluten-free chicken broth like Pacific Foods.
Double-check all spice blends for hidden gluten—many pre-mixed curry or chili powders contain it.
Lower-Carb Options
Skip the noodles entirely and serve the meatballs over cauliflower rice (sautéed with 1 tbsp sesame oil and 1 minced garlic clove). For a heartier bowl, add 1 cup shredded cabbage cooked in the broth for 5 minutes.
Reduce the tapioca starch in the meatballs to 2 tbsp and add 1 tbsp psyllium husk powder for binding without extra carbs. 🥬
Allergen-Friendly Adjustments
For egg-free meatballs, replace the eggs with 2 tbsp ground flaxseed mixed with 6 tbsp warm water (let sit for 5 minutes to gel). If soy sauce is an issue, use coconut aminos in the same amount.
For nut allergies, avoid fried shallots (opt for toasted pumpkin seeds instead). Always label your dish clearly if serving guests with multiple allergies.
Protein-Packed Boost
Add ½ cup cooked quinoa to each serving for extra protein and fiber. For the broth, stir in 1 tbsp fish sauce (like Red Boat) for deeper umami—it’s a game-changer for flavor without extra carbs.
If you’re using the vegetarian version, add ½ cup crumbled tofu to the meatball mixture for added protein. The quinoa absorbs the broth beautifully, making every bite more satisfying. 💪
Nutrition facts
Frequently asked questions
Can I use chicken instead of beef for the meatballs?
Ground chicken works beautifully and keeps the meatballs lighter. Use 1.5 lb ground chicken (80% lean) and reduce the cooking time by 1 minute per side—chicken cooks faster than beef. For extra flavor, add 1 tsp chicken bouillon powder to the meat mixture. The texture will be slightly less dense but just as delicious.
Why do the meatballs fall apart when boiling? This usually happens when the mixture is overworked or lacks proper binders.
How can I make the broth spicier?
Add 1-2 tbsp sambal oelek or 1 tsp chili flakes directly to the broth while simmering. For a smoky kick, include ½ tsp smoked paprika with the coriander seeds. If you prefer heat without spice, stir in 1 tsp gochujang (Korean chili paste) at the end. Adjust to taste—start with less and add more gradually.
Can I prepare bakso soup ahead of time?
Yes! The broth and meatballs can be made 1 day ahead and stored in the fridge. Reheat gently on the stove—add the noodles fresh to avoid sogginess. For freezing, portion the broth and meatballs separately (without noodles) for up to 3 months. Thaw overnight in the fridge, then reheat with fresh noodles. The flavors actually deepen overnight!
What's the best way to make the meatballs extra crispy?
Fry them at medium-high heat in enough oil to coat halfway up the meatballs. Use a thermometer—oil should be 350°F when ready. After the first fry, let them cool slightly, then give them a quick 30-second sear in fresh oil to restore crispiness. Keep them warm in a 200°F oven** while finishing the broth.
