Some recipes are more than just food; they are a direct line to a feeling of home, warmth, and uncomplicated comfort. For me, that recipe is Meatball Escarole Soup. It’s the dish I turn to when the weather gets a chill, when a cold is threatening, or when the chaos of a busy week calls for something grounding and restorative. I remember the first time I made it, I was struck by its beautiful simplicity—how a handful of humble ingredients could transform into a soup with such profound, satisfying flavor. The tender, savory meatballs, the silky ribbons of slightly bitter escarole, the creamy cannellini beans, all swimming in a crystal-clear, garlic-infused broth. It’s the kind of culinary alchemy that feels like a secret passed down through generations of Italian grandmothers. Now, the moment I start browning the meatballs, the house fills with a comforting aroma that brings my family flocking to the kitchen. It’s a one-pot wonder that delivers a complete, nourishing meal that feels both rustic and incredibly wholesome. This isn’t just soup; it’s a bowlful of love.
Easy Meatball Escarole Soup: A Hearty Italian Classic
This guide will walk you through creating this iconic Italian-American soup from scratch. Despite its deep, slow-simmered taste, it comes together surprisingly quickly, making it a perfect weeknight meal. We’ll cover how to make the most tender meatballs, how to build a flavorful broth, and all the tips you need to master this soul-soothing classic.
Complete Ingredients for Meatball Escarole Soup
The magic of this soup is in the quality and simplicity of its ingredients. The recipe is broken down into the two main components: the tender meatballs and the soup itself.
For the Tender Meatballs:
- Ground Meat: 1 lb total. For the most tender and flavorful result, use a combination of ½ lb 80/20 ground beef and ½ lb ground pork. You can use all beef if you prefer.
- Plain Breadcrumbs: ½ cup.
- Grated Parmesan Cheese: ½ cup, freshly grated for the best flavor and melt.
- Large Egg: 1, lightly beaten. This acts as the binder.
- Fresh Parsley: ¼ cup, finely chopped.
- Garlic: 2 cloves, minced or grated.
- Salt: ½ teaspoon.
- Black Pepper: ¼ teaspoon.
For the Soup:
- Olive Oil: 2 tablespoons, for browning the meatballs.
- Yellow Onion: 1 medium, chopped.
- Garlic: 4 cloves, thinly sliced.
- Low-Sodium Chicken Broth: 8 cups (64 oz). Using low-sodium is crucial as the meatballs and Parmesan add significant saltiness.
- Escarole: 1 large head, cored, washed thoroughly, and roughly chopped into 1-2 inch pieces.
- Canned Cannellini Beans: 1 (15 oz) can, rinsed and drained.
- Red Pepper Flakes: ¼ teaspoon (optional), for a gentle warmth.
- Parmesan Cheese Rind: 1 piece (optional, but highly recommended for incredible flavor).
- Salt and Black Pepper: To taste.
- For Serving: Extra grated Parmesan cheese and a drizzle of good quality olive oil.
Step-by-Step Instructions for Making the Soup
Follow these methodical steps to build layers of flavor, resulting in a soup that tastes like it has been simmering for hours.
Part 1: Make and Brown the Meatballs
This first step is essential for creating both tender meatballs and a flavorful foundation for the soup broth.
- Combine Meatball Ingredients: In a large bowl, add the ground beef, ground pork, breadcrumbs, grated Parmesan cheese, beaten egg, chopped parsley, minced garlic, salt, and pepper.
- Mix Gently: Using your hands, gently mix the ingredients together until they are just combined. Do not overmix! Overworking the meat will result in tough, dense meatballs.
- Form the Meatballs: Roll the mixture into small, bite-sized meatballs, about 1-inch in diameter. You should get approximately 25-30 meatballs. Place them on a plate or baking sheet.
- Brown the Meatballs: Heat the 2 tablespoons of olive oil in a large, heavy-bottomed pot or Dutch oven over medium-high heat. Carefully place the meatballs in the pot in a single layer, working in batches if necessary to avoid overcrowding. Brown the meatballs for about 4-5 minutes, turning them occasionally, until they are nicely browned on most sides. They do not need to be cooked through at this stage.
- Set Aside: Using a slotted spoon, remove the browned meatballs from the pot and set them aside on a clean plate. Do not wipe out the pot; the browned bits and rendered fat are packed with flavor.
Part 2: Build and Simmer the Soup
Now you will use the flavorful remnants in the pot to build your soup base.
- Sauté the Aromatics: Reduce the heat to medium. Add the chopped onion to the pot and cook, stirring occasionally, for about 5 minutes, until the onion has softened and becomes translucent. Use your spoon to scrape up some of the browned bits from the bottom of the pot as the onions release their moisture.
- Add Garlic and Spices: Add the sliced garlic and the optional red pepper flakes to the pot. Cook for another minute, stirring constantly, until the garlic is fragrant. Be careful not to let it burn.
- Create the Broth: Pour in the 8 cups of low-sodium chicken broth. Bring the liquid to a simmer, continuing to scrape the bottom of the pot to release any remaining flavorful bits.
- Simmer the Meatballs: Gently return the browned meatballs to the simmering broth. If you are using it, add the Parmesan rind. Reduce the heat to low, cover the pot, and let the soup simmer gently for 15-20 minutes. This will cook the meatballs through and allow their flavor to infuse the broth.
Part 3: Finish the Soup
- Add Greens and Beans: Add the chopped escarole and the rinsed cannellini beans to the pot. Stir gently. The pot may seem very full, but the escarole will wilt down considerably.
- Wilt the Escarole: Let the soup continue to simmer for another 5-10 minutes, or until the escarole is tender and has wilted to your liking.
- Final Seasoning: Remove the pot from the heat and discard the Parmesan rind. Taste the soup and season with salt and pepper as needed. Remember that the broth, meatballs, and cheese have already added a lot of salt, so you may not need much.
- Serve: Ladle the hot soup into bowls. Garnish with a generous sprinkle of extra grated Parmesan cheese and a finishing drizzle of good quality olive oil.
Nutrition Facts
- Servings: 6-8 servings
- Calories per serving: Approximately 400-500 kcal
Disclaimer: The nutritional information is an estimate and will vary depending on the specific ingredients used, particularly the fat content of the ground meat and the size of the servings.
Preparation Time
- Prep Time: 20 minutes (for chopping and making meatballs)
- Cook Time: 40 minutes
- Total Time: 1 hour
How to Serve Your Meatball Escarole Soup
This soup is a hearty one-pot meal, but the right accompaniments make it even better.
- Bread is a Must: This soup’s broth is too delicious to leave behind.
- Serve with a loaf of crusty Italian or sourdough bread for dipping.
- Offer slices of cheesy garlic bread on the side.
- Top the soup with crunchy homemade croutons.
- Elevate with Garnishes: A few simple toppings can enhance the flavor and presentation.
- Extra Parmesan: A generous grating of high-quality Parmesan or Pecorino Romano cheese is essential.
- A Drizzle of Olive Oil: A finishing drizzle of extra-virgin olive oil adds a peppery, fruity note.
- Fresh Herbs: A sprinkle of fresh, chopped parsley can brighten the flavors.
- More Heat: A dash of red pepper flakes for those who like it spicy.
Additional Tips for the Best Meatball Escarole Soup
These five tips will help you perfect your technique and ensure your soup is tender, flavorful, and absolutely delicious every time.
- Don’t Overwork Your Meatballs: This is the most critical tip for achieving tender, juicy meatballs. Mix the ingredients with your hands only until they are just combined. Overmixing develops the gluten in the breadcrumbs and toughens the proteins in the meat, resulting in dense, rubbery meatballs.
- Harness the Power of the Parmesan Rind: Never throw away the hard rind from a wedge of Parmesan cheese! It is pure, concentrated umami. Tossing it into the broth as the soup simmers releases a deep, savory, nutty flavor that you can’t get from grated cheese alone. Just remember to remove it before serving.
- Thoroughly Wash Your Escarole: Escarole has many layers and crevices where dirt and grit can hide. The best way to wash it is to chop it first, then submerge it in a large bowl of cold water. Swish it around vigorously, then let it sit for a few minutes to allow the grit to settle to the bottom. Lift the escarole out of the water with your hands or a sieve, leaving the dirty water behind.
- Brown the Meatballs for Flavor, Not to Cook Through: The goal of the initial browning step is not to cook the meatballs completely but to create a deep brown crust (the Maillard reaction). This crust not only adds texture to the meatballs but also leaves behind flavorful browned bits (fond) in the pot, which form the savory foundation of your entire soup when you deglaze with the broth.
- Season at the End: It is crucial to taste and adjust your final seasoning only after the soup has finished simmering. The chicken broth, the seasoned meatballs, and the Parmesan rind all contribute a significant amount of salt. Waiting until the flavors have fully melded will prevent you from accidentally over-salting your soup.
Frequently Asked Questions (FAQ)
Here are the answers to some common questions about making this classic Italian soup.
1. What is escarole, and can I substitute it with another green?
Escarole is a leafy green vegetable that is part of the chicory family, along with endive and radicchio. It has broad, pale green leaves and a pleasant, slightly bitter flavor that mellows beautifully when cooked. If you can’t find escarole, you can substitute it with:
- Spinach: Use an equivalent amount of fresh spinach, but add it during the last 2-3 minutes of cooking, as it wilts much faster than escarole.
- Kale: Lacinato (or dinosaur) kale is a great choice. Remove the tough stems, chop the leaves, and add it to the soup with the meatballs, as it needs a longer cooking time (20-25 minutes) to become tender.
- Swiss Chard: Separate the leaves from the stems. Chop the stems and add them with the onions, and add the chopped leaves during the last 10 minutes of cooking.
2. Can I use store-bought frozen meatballs to make this recipe easier?
Absolutely! This is a great shortcut for a busy weeknight. Simply skip the meatball-making and browning steps. Sauté your onions and garlic in a bit of olive oil, then add the broth and bring it to a simmer. Add the frozen meatballs directly to the simmering broth and cook for 20-25 minutes, or until they are heated through, before proceeding with the escarole and beans.
3. How do I store and reheat leftover soup?
This soup makes fantastic leftovers. Store it in an airtight container in the refrigerator for up to 4 days. Reheat it gently in a pot on the stovetop over medium-low heat until warmed through. You can also reheat individual portions in the microwave. Note that the escarole may become softer and the broth may be absorbed by the meatballs and beans, so you might want to add a splash of extra chicken broth when reheating.
4. Can I make this soup ahead of time?
Yes, this is an excellent recipe to make ahead. In fact, many people find that the flavor is even better the next day as the ingredients have more time to meld. Simply prepare the soup fully, let it cool, and store it in the refrigerator. Reheat gently before serving.
5. Can I freeze Meatball Escarole Soup?
You can, but the texture of the escarole can change upon thawing and reheating, becoming much softer. For the best results, it’s recommended to freeze the soup before adding the greens. Prepare the soup through the step of simmering the meatballs in the broth. Let it cool completely, then freeze the broth and meatballs in a freezer-safe container for up to 3 months. When you’re ready to eat, thaw the soup, bring it to a simmer on the stove, and then add the fresh escarole and beans to finish.
Easy Meatball Escarole Soup recipe
Ingredients
For the Tender Meatballs:
-
Ground Meat: 1 lb total. For the most tender and flavorful result, use a combination of ½ lb 80/20 ground beef and ½ lb ground pork. You can use all beef if you prefer.
-
Plain Breadcrumbs: ½ cup.
-
Grated Parmesan Cheese: ½ cup, freshly grated for the best flavor and melt.
-
Large Egg: 1, lightly beaten. This acts as the binder.
-
Fresh Parsley: ¼ cup, finely chopped.
-
Garlic: 2 cloves, minced or grated.
-
Salt: ½ teaspoon.
-
Black Pepper: ¼ teaspoon.
For the Soup:
-
Olive Oil: 2 tablespoons, for browning the meatballs.
-
Yellow Onion: 1 medium, chopped.
-
Garlic: 4 cloves, thinly sliced.
-
Low-Sodium Chicken Broth: 8 cups (64 oz). Using low-sodium is crucial as the meatballs and Parmesan add significant saltiness.
-
Escarole: 1 large head, cored, washed thoroughly, and roughly chopped into 1-2 inch pieces.
-
Canned Cannellini Beans: 1 (15 oz) can, rinsed and drained.
-
Red Pepper Flakes: ¼ teaspoon (optional), for a gentle warmth.
-
Parmesan Cheese Rind: 1 piece (optional, but highly recommended for incredible flavor).
-
Salt and Black Pepper: To taste.
-
For Serving: Extra grated Parmesan cheese and a drizzle of good quality olive oil.
Instructions
Part 1: Make and Brown the Meatballs
This first step is essential for creating both tender meatballs and a flavorful foundation for the soup broth.
-
Combine Meatball Ingredients: In a large bowl, add the ground beef, ground pork, breadcrumbs, grated Parmesan cheese, beaten egg, chopped parsley, minced garlic, salt, and pepper.
-
Mix Gently: Using your hands, gently mix the ingredients together until they are just combined. Do not overmix! Overworking the meat will result in tough, dense meatballs.
-
Form the Meatballs: Roll the mixture into small, bite-sized meatballs, about 1-inch in diameter. You should get approximately 25-30 meatballs. Place them on a plate or baking sheet.
-
Brown the Meatballs: Heat the 2 tablespoons of olive oil in a large, heavy-bottomed pot or Dutch oven over medium-high heat. Carefully place the meatballs in the pot in a single layer, working in batches if necessary to avoid overcrowding. Brown the meatballs for about 4-5 minutes, turning them occasionally, until they are nicely browned on most sides. They do not need to be cooked through at this stage.
-
Set Aside: Using a slotted spoon, remove the browned meatballs from the pot and set them aside on a clean plate. Do not wipe out the pot; the browned bits and rendered fat are packed with flavor.
Part 2: Build and Simmer the Soup
Now you will use the flavorful remnants in the pot to build your soup base.
-
Sauté the Aromatics: Reduce the heat to medium. Add the chopped onion to the pot and cook, stirring occasionally, for about 5 minutes, until the onion has softened and becomes translucent. Use your spoon to scrape up some of the browned bits from the bottom of the pot as the onions release their moisture.
-
Add Garlic and Spices: Add the sliced garlic and the optional red pepper flakes to the pot. Cook for another minute, stirring constantly, until the garlic is fragrant. Be careful not to let it burn.
-
Create the Broth: Pour in the 8 cups of low-sodium chicken broth. Bring the liquid to a simmer, continuing to scrape the bottom of the pot to release any remaining flavorful bits.
-
Simmer the Meatballs: Gently return the browned meatballs to the simmering broth. If you are using it, add the Parmesan rind. Reduce the heat to low, cover the pot, and let the soup simmer gently for 15-20 minutes. This will cook the meatballs through and allow their flavor to infuse the broth.
Part 3: Finish the Soup
-
Add Greens and Beans: Add the chopped escarole and the rinsed cannellini beans to the pot. Stir gently. The pot may seem very full, but the escarole will wilt down considerably.
-
Wilt the Escarole: Let the soup continue to simmer for another 5-10 minutes, or until the escarole is tender and has wilted to your liking.
-
Final Seasoning: Remove the pot from the heat and discard the Parmesan rind. Taste the soup and season with salt and pepper as needed. Remember that the broth, meatballs, and cheese have already added a lot of salt, so you may not need much.
-
Serve: Ladle the hot soup into bowls. Garnish with a generous sprinkle of extra grated Parmesan cheese and a finishing drizzle of good quality olive oil.
Nutrition
- Serving Size: one normal portion
- Calories: 400-500 kcal





