Soups & Stews
This old-fashioned meatball soup recipe brings back the warmth of Sunday dinners my grandmother used to make—rich, hearty, and packed with tender meatballs that practically melt in your mouth. The secret lies in slow-simmered broth and al dente meatballs that soak up every flavor without falling apart.
I perfected this version after years of testing, balancing traditional techniques with modern shortcuts like store-bought broth for convenience without sacrificing depth.
The beauty of this soup is in its simplicity: ground beef or pork, fresh herbs, and a few pantry staples transform into a comforting bowl that tastes like home.
The meatballs get their structure from breadcrumbs and egg, while the broth builds flavor from onions, carrots, and celery—classic aromatics that create that unmistakable homestyle taste. It’s the kind of dish that gets better with time, as the flavors meld and deepen during the long simmer.
By the time you’re done, you’ll have a steaming pot of soup with perfectly seasoned meatballs floating in a velvety broth, their edges just tender enough to hold together while releasing flavor with every spoonful.
The aroma alone will have everyone gathering around the table, and the first bite delivers that nostalgic comfort food satisfaction we all crave. This is the recipe I turn to when I need to feel like I’m wrapped in a cozy blanket on a chilly day.
Serve with crusty bread for dipping or alongside a simple green salad to balance the richness. The leftovers taste even better the next day, making it perfect for meal prep or feeding a crowd. Let’s get started on this timeless classic that never fails to impress.
Ingredients for old-fashioned meatball soup
Ground meat, fresh herbs, and pantry staples transform into nostalgic comfort with every spoonful.
| Ingredient | Amount | Notes |
|---|---|---|
| Ground Beef 🥩 | 1 ½ lb | 80% lean for best flavor |
| Ground Pork 🐖 | ½ lb | Optional for extra richness |
| All-Purpose Flour 🌾 | ½ cup | For meatball structure |
| Large Eggs 🥚 | 2 whole | Room temperature preferred |
| Fresh Parsley 🌿 | ¼ cup | Chopped, for freshness |
| Carrots 🥕 | 2 medium | Peeled, chopped into chunks |
| Yellow Onion 🧅 | 1 whole | Diced, yellow or white |
| Celery Stalks 🥬 | 3 whole | Diced, for classic trio |
| Garlic Cloves 🧄 | 4 cloves | Minced, for depth |
| Beef Broth 💧 | 6 cups | Low-sodium preferred |
| Tomato Paste 🍅 | 2 tbsp | For richness, not sweetness |
| Dried Oregano 🍃 | 1 tsp | Or fresh thyme if available |
| Ground Black Pepper 🌶️ | 1 tsp | Freshly ground preferred |
| Sea Salt 🧂 | 1 ½ tsp | Adjust to taste |
| Bay Leaves 🌿 | 2 whole | Removed before serving |
The beef-pork mix is key here—80% lean ground beef gives you that classic meatball texture, while the pork adds richness without making them greasy. Costco or local butchers usually have the best prices for bulk ground meat. Look for bright red color and avoid any with grayish tint (that's old stock). For the herbs, fresh parsley is ideal, but dried oregano works in a pinch—just use half the amount. The classic trio of onions, carrots, and celery (the 'holy trinity') builds the broth's foundation—don't skip them even if you're using store-bought broth.
No pork? All beef works fine—just add a splash of milk to the meatball mix for tenderness. Fresh parsley wilt fast, so wrap it in damp paper towels and store in a sealed bag. The tomato paste can be the squeeze-tube kind from Trader Joe's—it's perfect for small amounts and lasts forever. Want more depth? Add a pinch of red pepper flakes or a splash of red wine to the broth. The bay leaves? Don't skip them—they're what gives that authentic old-fashioned flavor, but remember to remove them before serving.
This soup tastes even better the next day—4-5 days in the fridge, 3 months frozen. I always make a double batch and freeze half for lazy days. Store the meatballs separately if you want to reheat them quickly later. The broth reduces beautifully, so if you're making it ahead, cool it fast in an ice bath before refrigerating to prevent a skin from forming. Serve with crusty bread or garlic toast—trust me, it's worth the extra minute to toast it.
Why You'll Love This Recipe
- No-Fuss Mixing: I swear by the 5-minute prep for the meatballs—just toss the ground beef, pork, flour, egg, and parsley in a bowl. No fancy techniques, no overthinking. The pork keeps them juicy, and the parsley adds that bright finish without extra effort.
- Rich, Homestyle Depth: That beef-pork blend? It’s where the magic happens—tender inside, slightly firm outside, with a broth so savory you’ll want to drink it. The eggs bind everything just right, and the flour gives those meatballs a satisfying bite.
- Meal-Prep MVP: Between us, this is my go-to for busy days. Make a double batch, and you’ve got lunch for three days. The meatballs stay intact even after reheating, and the broth only gets better as it sits—perfect for throwing together when you’re running late.
- Budget-Friendly Comfort: Ground beef and pork stretch further than you’d think, and the ingredients won’t break the bank. Plus, leftovers taste just as good the next day—ideal for when you’re feeding a crowd or just saving money without sacrificing flavor.
Step-by-step instructions for old-fashioned meatball soup
Here's how to create hearty, old-fashioned meatball soup with tender meatballs and rich broth.
Prepare the Meatball Mixture
In a large bowl, combine the 1.5 lb ground beef and 0.5 lb ground pork. This combination gives you that classic meatball flavor with perfect texture. Add the 0.5 cup all-purpose flour, 1.5 tsp sea salt, 1 tsp ground black pepper, and 1 tsp dried oregano, mixing gently with your hands until just combined. You want to keep the mixture cool so the fat doesn't render out prematurely.
In a separate bowl, beat the 2 whole large eggs until lightly frothy. Add the chopped 0.25 cup fresh parsley and mix well. Gradually add this egg mixture to the meat mixture, stirring just until everything comes together. Be careful not to overmix—this keeps your meatballs tender. Once combined, cover the bowl and refrigerate for 30 minutes to help the flavors meld and the mixture firm up slightly.
Form and Brown the Meatballs
After chilling, use your hands to form the meat mixture into 1.5-inch meatballs—about 18 total for 6 servings. I like to roll them gently but firmly to ensure they hold their shape when cooking. Heat 1 tablespoon of olive oil (not listed but essential for browning) in a large Dutch oven over medium-high heat. Working in batches, add the meatballs and brown them on all sides for about 3-4 minutes per batch. They should develop a golden crust but remain tender inside.
Remove the browned meatballs and set them aside on a plate. Don't skip this browning step—it adds incredible depth of flavor to your soup. The meatballs will finish cooking in the broth, but this initial sear gives them that classic restaurant-quality texture.
Sauté the Vegetables
In the same Dutch oven, reduce heat to medium and add 1 tablespoon of olive oil if needed. Add the diced 1 whole yellow onion, chopped 2 medium carrots, and diced 3 whole celery stalks. Sauté for 5-6 minutes until the vegetables soften slightly and begin to release their natural juices. This is your classic "holy trinity" of soup vegetables, and cooking them first builds a flavorful base.
Add the 4 minced garlic cloves and cook for another 30 seconds until fragrant. Here's where it gets good—stir in the 2 tbsp tomato paste and cook for 1 minute, stirring constantly. This creates a rich, slightly sweet foundation for your soup that balances the savory meatballs perfectly.
Build the Rich Broth
Pour in the 6 cups beef broth and bring everything to a gentle simmer. Add the 2 whole bay leaves and return the meatballs to the pot. Partially cover and let it simmer gently for 30 minutes. You want the meatballs to cook through completely while absorbing all that flavorful broth. The soup should be bubbling gently but not boiling vigorously—this prevents the meatballs from toughening.
After 30 minutes, check the meatballs with a fork—they should be cooked through with no pink remaining in the center. Taste the broth and adjust seasoning with additional sea salt or ground black pepper if needed. The vegetables should be tender but still hold their shape—this is key for that old-fashioned texture.
Finish and Serve
Remove the 2 bay leaves before serving. Ladle the soup into bowls, making sure each serving gets 3 meatballs. The broth should be rich and flavorful, with tender meatballs that fall apart slightly at the edges. Garnish each bowl with a sprinkle of fresh parsley for that bright pop of color and freshness.
Serve immediately with crusty bread to soak up every last drop of that delicious broth. The secret to great meatball soup is patience—letting everything simmer together so the flavors meld perfectly. This isn't something you want to rush, but the results are worth every minute.
Pro Tips For Making Old-Fashioned Meatball Soup
- Chill the Meat Mix: After mixing your ground beef and pork with flour, eggs, and parsley, pop the whole batch in the fridge for 15–20 minutes. I used to skip this, but the meatballs held together way better afterward—no more falling-apart disasters when they hit the broth.
- Brown Meatballs First: Don’t skip searing those meatballs before adding liquid—get them golden on all sides in a hot pan with a little oil. This locks in flavor and prevents them from turning into mushy blobs later, even if you’re simmering for hours.
- Don’t Overmix the Dough: Stir just until the flour and egg bind the meat—overworking it makes meatballs dense and dry. I learned this the hard way after making a batch that tasted like a hockey puck instead of soup-worthy comfort food.
- Simmer Low and Slow: Keep the soup at a gentle bubble, not a rolling boil, or the meatballs will toughen up. I used to rush it, but now I let it simmer uncovered for at least 45 minutes—patience pays off with juicy, flavorful results.
Essential equipment for perfect results
Dutch Oven Essentials
This recipe was designed with a Dutch oven in mind—it’s the workhorse of old-fashioned cooking. I use my Le Creuset 5.5-quart because it distributes heat evenly and handles the long simmer beautifully. If you don’t own one, a heavy-bottomed stainless steel pot (like All-Clad) works just as well.
The key is choosing a pot that’s large enough to hold all the ingredients without crowding—you want room for the meatballs to brown properly. 🔥
Meatball Tools
For shaping meatballs, I swear by a meatball maker (like the OXO Good Grips model) to ensure uniform size, but a simple ice cream scoop works too. If you’re rolling by hand, wet your palms slightly to prevent sticking.
A slotted spoon (I love the Ozeri Touch brand) is perfect for transferring browned meatballs without breaking them apart. For extra precision, use a meat thermometer to check internal temp—meatballs should reach 160°F before serving.
Broth Boosters
While store-bought broth saves time, homemade elevates this dish. If you’re making your own, a fine-mesh strainer and cheesecloth help remove impurities for a crystal-clear broth. For depth, I add a parmesan rind (simmered for 20 minutes) or a splash of red wine (½ cup) to the broth.
A wooden spoon (like Lodge’s cast-iron-compatible version) stirs gently without scratching your pot. Pro tip: Keep a small bowl of cold water nearby to refresh herbs like parsley while prepping.
Garnish Game
Fresh parsley isn’t just for looks—it adds brightness. I use flat-leaf parsley (not curly) because it holds its shape better when chopped. A microplane (like Barenje) is perfect for zesting lemon wedges to serve on the side.
For extra flair, toast whole-grain breadcrumbs in a dry pan until golden, then sprinkle over the soup. A ladle with a lid (like OXO’s) keeps soup hot while serving—no more lukewarm leftovers!
Storage Solutions
Leftovers taste even better the next day, so store them properly. Use glass Pyrex containers (with snap-on lids) for fridge storage—glass keeps flavors pure. For freezing, I recommend quart-sized silicone molds (like Stasher bags) to portion individual servings.
Label with dates—this soup keeps for up to 3 months in the freezer. When reheating, a slow cooker on “warm” is gentler than the microwave, preserving texture. 💫
Nutrition facts
Frequently asked questions
Can I make this meatball soup with chicken instead of beef?
Swap the beef and pork for 1.5 lbs ground chicken and add 1/4 cup grated parmesan to the meatball mix for structure. Use chicken broth instead of beef broth, and simmer for 25 minutes instead of 30—the chicken cooks faster. The flavor will be lighter but equally comforting, perfect for a weeknight meal.
Why do my meatballs fall apart in the soup?
Overmixing the meatball mixture or skipping the 30-minute chill in the fridge are common culprits. Also, avoid using too much breadcrumbs (stick to 1/2 cup max) and make sure your meat isn't too lean. If they still fall apart, try adding 1/4 cup cooked rice to the mix for extra binding power.
How can I make this soup vegetarian?
Replace the meatballs with 15 oz lentils or 12 oz store-bought vegan meatballs. Use vegetable broth and add 1 can (15 oz) diced tomatoes to the broth for richness. Boost flavor with 1 tsp smoked paprika and 1/2 tsp liquid smoke in the meatball mix (if using homemade). The soup will have a heartier texture and still satisfy that comforting craving.
Can I make this soup in an Instant Pot?
Yes! Brown the meatballs in the Instant Pot's sauté function first, then add all ingredients except bay leaves. Cook on high pressure for 12 minutes, then quick-release. Remove the meatballs, shred any that fell apart, and return everything to the pot. Simmer on sauté function for 10 minutes to thicken the broth. The Instant Pot cuts cooking time to 30 minutes total while keeping all the flavor.
What's the best way to reheat leftovers?
Gently reheat on the stovetop over low heat with a splash of water or broth to prevent drying out. For microwave reheating, cover with a damp paper towel and heat in 30-second intervals, stirring between each. The slow cooker on warm setting is ideal for large batches—just add a little broth to maintain consistency. Never reheat to boiling temperature to preserve the meatballs' texture.
