Beef Meatball Soup with Napa Cabbage and Ginger
Small beef meatballs simmered in a ginger and garlic broth with mushrooms, sliced napa cabbage, and scallions, finished with lime and cilantro just before serving.
Why You'll Love This Recipe
Soup is not what most people picture for lunch in the middle of a workweek, and I think that is a shame, because a bowl of hot broth with something solid in it is the most reviving thing you can eat at a desk. This one takes about forty minutes and makes four generous bowls. I keep the meatballs and the broth together in one container and cook the cabbage barely at all, so it still has some life in it when it gets reheated on Wednesday. On a cold day I carry it in a wide-mouth jar and drink the last of the broth straight from it.
The meatballs hold together with no egg and no breadcrumb in them, and the trick is to mix the beef briskly with your hand for a full minute before you roll it. That work is what makes the meat tacky enough to stay in a ball in simmering broth. Grated onion goes into the mix for moisture, and I keep the meatballs small, about an inch, so they cook through in ten minutes and you get two or three in every spoonful. Brown them first in the dry pot, not for the sake of the meatballs but for the sticky brown film they leave behind, which the broth then lifts and carries.
What makes this eat like a meal rather than a starter is the amount of meat in the pot and the cabbage going in at the very end. Napa wilts in about four minutes, and if you stop right there the ribs still have a slight crunch against the soft meatballs, which is the contrast the whole bowl runs on. Lime juice and cilantro go in off the heat, where they stay sharp and green rather than turning dull. If you are reheating a portion later in the week, add a fresh squeeze of lime to the bowl, because brightness is the one thing that fades overnight.
Ingredients
- 1 1/4 lb ground beef (85/15)
- 1 small head napa cabbage (about 1 1/4 lb), sliced crosswise into 1-inch ribbons
- 6 cups beef bone broth
- 6 oz shiitake or cremini mushrooms, stemmed and sliced
- 2 medium carrots, sliced into thin coins
- 1 medium yellow onion, half grated and half thinly sliced
- 1 piece fresh ginger, about 3 inches (3 tbsp grated), divided
- 5 cloves garlic, minced, divided
- 5 scallions, white parts minced and green tops sliced
- 2 tbsp fresh lime juice, from about 1 lime
- 1/3 cup chopped fresh cilantro
- 1 tbsp avocado oil
- 1 tsp fine sea salt, divided
Instructions
- Mix and roll the meatballs: Put the ground beef in a bowl with the grated half of the onion, the scallion whites, half the garlic, 1 tablespoon of the grated ginger, and 1/2 teaspoon of the salt. Mix briskly with your hand for a full minute, until the meat turns tacky and starts to cling to itself, then roll it into about 24 meatballs the size of a walnut.
- Brown the meatballs: Heat the avocado oil in a large pot or Dutch oven over medium-high. Add the meatballs in a single layer without crowding them and brown for 2 minutes per side, turning once, until two faces are deeply colored. They will not be cooked through, and they do not need to be, since they finish in the broth. Move them to a plate.
- Cook the mushrooms and aromatics: Add the sliced onion and the mushrooms to the same pot and cook for 5 minutes, until the mushrooms release their water and it cooks away and the pan goes brown at the bottom again. Stir in the remaining garlic and ginger and cook for 45 seconds, until they smell sweet.
- Simmer the broth and meatballs: Pour in the broth and scrape the bottom of the pot clean with a wooden spoon. Add the carrots, bring it to a gentle simmer, then return the meatballs and any juices. Simmer uncovered for 10 to 12 minutes, until the meatballs are cooked through and read 160°F (71°C) at the center.
- Add the cabbage: Stir in the thick white ribs of the napa cabbage first and cook for 2 minutes, then add the leafy green parts and cook 2 minutes more, just until they collapse into the broth and turn glossy. Taste the broth and add the remaining salt if it needs it.
- Finish off the heat: Take the pot off the burner and stir in the lime juice. Ladle into deep bowls and scatter the scallion greens and the cilantro over the top so they stay bright and raw against the hot broth.
Variations
- Lamb and mint: Roll the meatballs from ground lamb and finish with torn mint in place of the cilantro for a warmer, more herbal bowl.
- More vegetables: Add sliced bok choy, snow peas, or thin strips of kohlrabi in the last few minutes when you want the bowl heavier on greens.
- Turmeric broth: Stir a teaspoon of ground turmeric in with the ginger and garlic for a golden broth with a faintly earthy edge.
- Shredded beef version: Skip the meatballs and drop shredded cooked beef chuck into the finished broth for a soup that comes together in 20 minutes.
- Bigger bowl: Add cubed taro or cassava with the carrots and simmer until tender for a soup with real starch in it.
Storage & Leftovers
This keeps in the refrigerator for up to 4 days in a sealed container. Cool it uncovered for 20 minutes before the lid goes on, since trapping the steam turns the cabbage soft and grayish. The broth tastes deeper on the second day as the ginger and garlic settle into it.
Reheat gently on the stovetop over medium-low for 6 to 8 minutes, just to a simmer and no further, because a hard boil tightens the meatballs and cooks the last of the texture out of the cabbage. A fresh squeeze of lime and a few cilantro leaves at the bowl bring it right back.
For the freezer, hold the cabbage back. Freeze the broth and meatballs together for up to 3 months, thaw overnight in the refrigerator, then reheat and stir in fresh cabbage for the last 4 minutes. Frozen and thawed napa collapses into threads and loses the crunch that makes this bowl interesting.
Notes & Tips
- Work the meat, then stop: One brisk minute of mixing builds the bind. Much past that and the meatballs turn springy and dense, so mix hard and then leave it alone.
- Wet your hands to roll: Cold water on your palms keeps the beef from sticking, and the meatballs come out round and smooth in about half the time.
- Brown, do not cook through: Two faces of color are all you want in the pot. The broth finishes the job, and meatballs cooked twice come out dry.
- Split the cabbage: The white ribs need a couple of minutes longer than the frilly leaves. Adding them separately is the difference between crunch and mush.
- Grate the ginger, do not chop it: Grated ginger dissolves into the broth and flavors every spoonful. Chopped pieces stay in fibrous knots you end up chewing on.
- Lime goes in off the heat: Acid boiled in a broth goes flat and slightly bitter. Added at the end it stays sharp and lifts the whole pot.
Nutrition & Mindful Eating
- The meatballs, the broth, and the cabbage each do a different job in this bowl. The beef gives it substance, the long simmered broth gives it savor, and the napa cabbage and mushrooms keep a meat-heavy soup feeling light on the spoon.
- Ground beef browned before it simmers keeps its crust and its flavor, and it is the reason a bowl of soup can hold you through an afternoon. Protein this dense is doing most of that work, along with the iron and zinc that red meat carries.
- Napa cabbage is the frilly, tender one, and it goes silky in minutes while the white ribs stay crisp. It brings vitamin C and folate to the bowl, and the fiber in it is soft enough that it usually sits gently on people who find cabbage hard going.
- Mushrooms are what give this broth its savory depth, since they release glutamates as they cook down. They also carry selenium and B vitamins like riboflavin, which is a lot to get from something that mostly tastes like the woods.
- Ginger, garlic, scallion, and a squeeze of lime at the end are the whole seasoning, and the ginger is what you taste at the back of your throat. Aromatics this assertive are why the pot needs far less salt than a soup usually does.
- As you eat, let the steam and the ginger reach you before the first spoonful does, and notice partway down the bowl how much warmer and steadier you feel than when you sat down.
Frequently Asked Questions
What holds the meatballs together with no egg?
The beef itself, once you work it. Mixing briskly for a minute pulls the proteins into strands that grip each other, which is the same reason a sausage holds its shape. Keep the meatballs small, brown them before they go into liquid, and simmer rather than boil, and they will stay whole.
Can I use a different green?
Yes. Bok choy is the closest match and goes in at the same point, sliced ribs first and leaves after. Regular green cabbage works but needs about 8 minutes rather than 4, and swiss chard or spinach need only a minute since they collapse almost immediately.
Can I make this ahead for the week?
It is built for it. Roll and brown the meatballs up to 2 days ahead and refrigerate them, then bring the broth and vegetables to a simmer and finish the soup in about 15 minutes. Portion it into jars and keep the lime and cilantro separate until you eat.
Does this fit an AIP elimination phase?
It does. There are no grains, legumes, dairy, eggs, nuts, seeds, or nightshades in it, and the flavor comes from ginger, garlic, scallion, mushrooms, and lime. Check the label on your broth, since many boxed varieties carry pepper or paprika even when the front of the box says nothing about them.

