Soups & Stews
This albondigas soup recipe with cabbage brings the comforting warmth of Spanish home cooking to your table, where tender meatballs float in a fragrant herb-infused broth. The secret lies in perfectly balanced meatballs—juicy inside, lightly browned outside—that soak up the savory flavors of the broth while the cabbage adds just the right crunch. I've developed this recipe to honor tradition while making it accessible, whether you use fresh herbs or dried spices.
The beauty of albondigas soup is in its simplicity: ground meat, breadcrumbs, and herbs form the meatballs, while a rich broth simmers with garlic, onions, and bay leaves. The cabbage cooks just until tender-crisp, ensuring every bite delivers both heartiness and freshness. What makes this version special is the way the meatballs stay intact while absorbing the broth's flavors, creating a harmonious balance of textures and tastes.
By the time you serve this soup, your kitchen will smell like a Spanish countryside tavern, and your guests will be reaching for seconds. The meatballs hold their shape beautifully, the broth is deeply flavorful, and the cabbage adds a satisfying bite. It's the kind of dish that feels indulgent yet remains balanced enough for a weeknight dinner or a special gathering.
Whether you're making this for a family meal or a dinner party, the recipe scales effortlessly. The meatballs can be made ahead and refrigerated, and the broth tastes even better the next day. Here's how to create this comforting classic in your own kitchen.
Ingredients for albondigas soup recipe with cabbage
Sixteen ingredients, Spanish soul, and a pot of comforting goodness waiting to happen.
| Ingredient | Amount | Notes |
|---|---|---|
| Ground Beef 🥩 | 1 ½ lb | 80/20 fat ratio preferred |
| Day-Old Bread 🍞 | 1 cup | Crusts removed, cubed small |
| Large Eggs 🥚 | 2 whole | Room temperature for best binding |
| Fresh Parsley 🌿 | ½ cup | Finely chopped, stems included |
| Fresh Dill 🌿 | ¼ cup | Chopped, or 1 tbsp dried |
| Garlic Cloves 🧄 | 4 cloves | Minced, not powdered |
| Green Cabbage 🥬 | 1 lb | Green cabbage, shredded small |
| Yellow Onion 🧅 | 1 whole | Medium, diced small |
| Carrots 🥕 | 3 whole | Medium, peeled, sliced thin |
| Bay Leaves 🌿 | 2 whole | Dried, standard size |
| Chicken Broth 💧 | 6 cups | Low-sodium preferred |
| Extra-Virgin Olive Oil 🫒 | ¼ cup | For meatball frying |
| Dried Thyme 🌿 | 1 tsp | Or 1 tbsp fresh |
| Salt 🧂 | 1 ½ tsp | Diamond Crystal preferred |
| Ground Black Pepper 🌶️ | ½ tsp | Freshly ground |
The ground beef is where the magic starts—80/20 fat ratio keeps those meatballs juicy. Costco or Trader Joe's usually carry it pre-ground, but if you're buying a block, ask for chuck or round—it stays tender. Fresh herbs make all the difference here, so skip the dried unless you're in a pinch. Penzeys or your local farmers market are best for parsley and dill, but the grocery store works too if you grab them within a day or two. The cabbage? Green cabbage is traditional, but savoy adds texture if you prefer. Just make sure it's firm and crisp—no wilted leaves.
No fresh parsley? Dried works at half the amount, but it won't have the same brightness. Short on dill? Fresh basil at the same quantity gives a different but lovely flavor. The chicken broth can be store-bought (Pacific Foods or Imagine are low-sodium and solid), but homemade is worth it if you've got the time. For the meatballs, day-old bread is key—it's drier and absorbs less moisture than fresh. Toast it first if you're using it straight from the bag, but crusts off is non-negotiable. The carrots can be baby carrots if that's what's in the fridge, but they'll take longer to cook.
This soup tastes even better the next day—honestly, the flavors meld into something extraordinary. Store leftovers in the fridge for 4-5 days or freeze for 3 months. I like to portion it into containers so lunches are sorted for the week. The meatballs can be made ahead and frozen before cooking—just thaw in the fridge overnight. The broth reduces beautifully, so if you're making it for a crowd, start with 8 cups instead of 6. And trust me, the extra effort of shredding the cabbage by hand makes all the difference in texture.
Why You'll Love This Recipe
- No Chopping Needed: I use stale bread straight from the fridge—no toasting, no fancy prep. Just tear it into chunks, soak in milk, and mix. Honestly, the texture comes out perfect every time.
- Herb-Packed Magic: That parsley and dill? They turn the meatballs into something special—bright, fresh, and impossible to resist. Between us, my husband always asks for seconds, and I’m not even kidding.
- Leftovers That Shine: This soup tastes even better the next day (yes, really). I make a big batch on Sundays, and by Wednesday, it’s still the star of our meals—no sad, watery leftovers here.
- Budget Meal That Feeds: Ground beef stretches far with the cabbage and broth, and day-old bread? Free money. It’s my go-to when I need to feed the family without breaking the bank. (And it’s still delicious.)
Step-by-step instructions for Spanish-style albondigas soup with cabbage
Here's how to create tender meatballs and aromatic broth that define this classic Spanish comfort dish.
Prepare the Meatball Mixture
In a large bowl, combine the 1.5 lb ground beef with the 1 cup day-old bread (cubed and crusts removed). The bread should be completely dry—if it's not, squeeze out any excess moisture with your hands. This ensures your meatballs won't fall apart when cooking.
Add the 2 whole large eggs (room temperature) and mix thoroughly with your hands until the mixture comes together. The eggs act as a binder, helping the meatballs hold their shape. In a separate small bowl, combine the 0.5 cup fresh parsley, 0.25 cup fresh dill, 4 cloves minced garlic, 1.5 tsp salt, and 0.5 tsp ground black pepper. Mix these herbs and spices well before adding them to the meatball mixture.
Gently fold the herb mixture into the beef mixture, being careful not to overwork it. The dough should be soft but hold together when pressed. If it feels too dry, add a teaspoon of water at a time until it reaches the perfect consistency. Form the mixture into 1.5-inch meatballs—about 18-20 meatballs total—and place them on a plate. Cover with plastic wrap and refrigerate for 15 minutes to firm up before cooking.
Brown the Meatballs and Sauté the Vegetables
Heat the 0.25 cup extra-virgin olive oil in a large Dutch oven or heavy pot over medium-high heat. Once the oil shimmers, carefully add the meatballs in a single layer, leaving space between them. Cook undisturbed for 3-4 minutes until they develop a deep golden-brown crust on all sides. This browning step adds incredible flavor to the soup.
Remove the meatballs and set them aside on a plate. In the same pot, add the 1 whole yellow onion (diced small) and 3 whole carrots (sliced thin). Cook for 4-5 minutes until the onions soften and begin to caramelize. Add the 1 lb green cabbage (shredded small) and stir to combine. Cook for another 3 minutes until the cabbage begins to wilt slightly.
Stir in the 2 whole bay leaves and 1 tsp dried thyme, allowing the spices to bloom for 30 seconds to release their aromatic flavors. This step ensures the broth will be infused with the rich, earthy notes of the herbs.
Simmer the Soup to Perfection
Pour in the 6 cups chicken broth, scraping up any browned bits from the bottom of the pot with a wooden spoon. Return the meatballs to the pot and bring the mixture to a gentle boil. Once boiling, reduce the heat to low and cover the pot with a lid. Let the soup simmer for 25-30 minutes, stirring occasionally, until the meatballs are cooked through and the flavors have melded together.
To check if the meatballs are done, use a fork to pierce one—it should slide in easily, and the meat should be fully cooked with no pink remaining. The broth should have thickened slightly and taken on a rich, golden hue from the caramelized vegetables and meatballs. If the soup is too thin, uncover the pot and simmer for an additional 5-10 minutes to reduce it to your desired consistency.
Finish and Serve
Remove the 2 whole bay leaves from the soup and discard them. Taste the broth and adjust the seasoning if needed—add more salt if it tastes bland or more ground black pepper if it needs a little kick. The soup should be flavorful but balanced, with the herbs and spices complementing the meatballs and vegetables.
Ladle the soup into bowls, placing 3-4 meatballs in each serving. Garnish each bowl with a sprinkle of fresh parsley and fresh dill for a pop of color and freshness. Serve immediately while the meatballs are warm and the broth is steaming hot. This soup tastes even better the next day, so consider making a double batch for leftovers!
Pro Tips For Making Albondigas Soup Recipe With Cabbage
- Chill the Meatball Mix: After forming the albondigas, pop them in the fridge for 20-30 minutes before cooking. I used to skip this and ended up with crumbly meatballs that fell apart in the broth—like overworked dough. Cold meatballs stay together, so resist the urge to rush this step. ---
- Toast the Bread Crumbs: Dry out the day-old bread in a 300°F (150°C) oven for 10 minutes before soaking it in milk. This prevents soggy meatballs—wet bread absorbs too much moisture and turns the mixture into glue. (Yes, even if you’re impatient like me.) ---
- Simmer, Don’t Boil: Once the meatballs are in the broth, keep the heat at a gentle simmer—not a rolling boil. I learned this the hard way when my albondigas turned rubbery instead of tender. A low simmer (tiny bubbles, occasional swirls) cooks them evenly without toughening the texture. ---
- Sauté the Cabbage First: Cook the shredded cabbage in the same pot for 5-7 minutes before adding the broth. This softens it slightly and pulls out its natural sweetness, so it doesn’t turn mushy later. (Pro move: Add a pinch of salt here—it makes a real difference.)
Dietary considerations for this albondigas soup recipe with cabbage
Gluten-Free Adaptation
To make this albondigas soup gluten-free, replace the breadcrumbs with gluten-free breadcrumbs or finely ground certified gluten-free cornmeal—about 1 cup total. I’ve tested Bob’s Red Mill gluten-free breadcrumbs and found they work beautifully, though the texture will be slightly denser than traditional meatballs. For extra binding, add 1 extra egg to compensate for the lack of gluten. Always check labels on broths too—Pacific Foods and Imagine both offer gluten-free options. 🌾
Vegetarian Option
Swap the ground beef for 1.5 lb finely chopped mushrooms (cremini or portobello) or lentils (cooked and drained) for a hearty vegetarian version. I like using walnut halves (finely chopped) for a meaty texture—they absorb flavors wonderfully. Boost umami with 1 tbsp soy sauce or 1 tsp miso paste in the broth. For binding, add 1 tbsp ground flaxseed mixed with 3 tbsp water (let it thicken for 5 minutes) instead of eggs. The cabbage and carrots will still provide that satisfying bite. 🌱
Dairy-Free Notes
This recipe is naturally dairy-free, but if you’re avoiding all animal products, ensure your broth is vegetable-based (like Pacific Foods or Imagine vegetable broth). For extra richness, stir in 2 tbsp nutritional yeast at the end—it adds a cheesy, savory depth without dairy. The meatballs hold up perfectly without any cheese or butter, so no adjustments are needed beyond the broth. 🥛
Low-Carb Version
Cut carbs by omitting the bread entirely and replacing it with 1 cup finely grated zucchini (squeeze out excess moisture) or 1 cup almond flour. The meatballs will be lighter but still tender. For extra flavor, add 1 tbsp Dijon mustard to the mix—it helps bind the ingredients without gluten. The cabbage and carrots remain, so you’ll still get fiber and vitamins. This version works well if you’re tracking keto or low-carb diets. 🥦
Allergen-Friendly Swaps
For egg allergies, replace the eggs with 2 tbsp ground flaxseed mixed with 6 tbsp water (let it thicken for 5 minutes). If you’re allergic to mustard (common in low-carb versions), omit it entirely—the meatballs will still hold together. For sesame-free needs, avoid using sesame oil in cooking (though this recipe doesn’t call for it). Always double-check labels on broths and spices—Penzeys and Trader Joe’s offer clear allergen-free options. 🚫🥚
Nutrition facts
Frequently asked questions
Why does the recipe call for day-old bread instead of fresh?
Day-old bread is drier and absorbs less moisture, which prevents your meatballs from becoming mushy when cooked. Fresh bread adds too much moisture, causing the meatballs to fall apart in the broth. If you only have fresh bread, toast it first to remove excess moisture before using.
Can I use ground turkey or chicken instead of beef?
Ground turkey or chicken works perfectly, though the flavor will be slightly lighter. For best results, use 85/15 turkey or chicken with 10% fat content to maintain juiciness. The cooking time remains the same, but turkey may need an extra 2-3 minutes to fully cook through.
How do I prevent the meatballs from falling apart?
Handle the meatball mixture gently and avoid overmixing—just combine until everything comes together. Chill the formed meatballs for 15 minutes before cooking to firm them up. Also, don't overcrowd the pan when browning them—leave space between each meatball for even cooking.
What if I don't have fresh parsley or dill?
You can substitute with dried herbs at half the amount (e.g., 1/4 tsp dried parsley instead of 1/2 cup fresh). For dill, try fresh basil or cilantro in equal amounts. If you're missing both, skip them—the soup will still be flavorful, though the fresh herbs add a lovely brightness.
Can I make this soup ahead of time?
This soup tastes even better the next day! Let it cool completely, then refrigerate for up to 4-5 days or freeze for 3 months. Reheat gently on the stove over medium-low heat, stirring occasionally. The meatballs may absorb more broth when reheated, so you might want to add a splash of water or broth if needed.
