This cozy Meatball Soup is pure comfort in a bowl. I love making a big pot because it works for just about everything, easy weeknight dinners, satisfying lunches, meal prep, and freezer-friendly emergency meals. You can even prepare the meatballs ahead of time, making the soup come together quickly on busy nights.

This post may contain affiliate link(s). As an Amazon Associate, I earn from qualifying purchases. See Disclosure.
This is the kind of soup that fits right into everyday dinners but also feels special enough to serve guests. The meatballs brown fast, the broth develops rich flavor in no time, and everything comes together in a single pot. Finished with freshly grated Parmesan and a sprinkle of parsley, it’s hearty, cozy, and perfect for spoonful after spoonful.

Ingredients
Meatballs
- Large egg – Extra large egg works, too.
- Milk – Any kind of milk or cream will work.
- Breadcrumbs – You’re going to soak the breadcrumbs in the milk.
- Grated Parmesan cheese – Any kind will work; save the pricey stuff for finishing.
- Garlic – A microplane makes quick work of the garlic.
- Salt – I cook with kosher salt. If using table salt, use about ¾ teaspoon.
- Black pepper
- Ground beef – 80/20 makes the best meatballs.
- Ground pork – Lean ground pork works best; a beef/pork blend is fine too.
Soup
- Olive oil – Used for browning meatballs and sautéing vegetables.
- Yellow onion – Yellow, brown, or sweet onions all work.
- Bell peppers – Any color is fine; seed and dice small.
- Garlic – Fresh garlic is best here.
- Tomato paste – From a can or tube.
- Chicken broth – Homemade or good-quality store-bought with minimal ingredients.
- Beef broth – Low- or no-sodium preferred.
- Diced tomatoes – One 28-ounce can also works.
- Heavy whipping cream – Half-and-half can be used instead.
- Spinach or kale – Remove tough stems if using kale.
- Dry pasta – Small shapes like mini shells, ditalini, or orzo work best.
- Dried oregano and red pepper flakes
- Salt and black pepper – To taste.

How to Make Meatball Soup
Scroll down for the full recipe card with exact measurements and printable instructions.
In a large mixing bowl, whisk together the egg and milk. Add the breadcrumbs and let them soak for 1 to 2 minutes until a soft paste forms.
Stir in the Parmesan, garlic, salt, and pepper. Add the ground beef and ground pork, gently mixing just until combined. Be careful not to overmix so the meatballs stay tender.

Roll the mixture into ½-inch meatballs, small enough to fit comfortably on a spoon with broth and pasta. Set aside.

Heat 1 tablespoon of olive oil in a 4½-quart soup pot or Dutch oven over medium-high heat. Brown the meatballs in batches for 2 to 3 minutes, turning gently. Add a splash of oil if needed and reduce the heat slightly if they brown too fast. The meatballs will finish cooking in the soup. Remove and set aside.

Place the diced tomatoes in a bowl and briefly blend with an immersion blender or mash with a potato masher to your desired texture, leaving some chunks if you like a rustic soup.
Add the remaining olive oil to the same pot over medium-low heat. Stir in the onions and cook for 6 to 8 minutes until softened. Add the bell peppers and cook for another 4 minutes.
Stir in the garlic, tomato paste, oregano, and red pepper flakes. Cook for about 1 minute, stirring constantly, until fragrant.
Pour in the chicken broth, beef broth, and prepared tomatoes. Bring to a boil, then reduce to a steady simmer. Let the soup simmer uncovered for 15 minutes to build flavor.

Bring the soup back to a gentle boil and add the meatballs and dry pasta. Cook until the pasta is tender, following package directions.
Lower the heat and stir in the heavy cream. Add the spinach or kale and cook just until wilted, about 1 minute.
Taste and adjust seasoning with salt and pepper. Serve hot, garnished with freshly grated Parmesan and chopped parsley.
Chef Jenn’s Tips
- Keep meatballs small so they fit easily on a spoon with broth and pasta.
- Lightly brown the meatballs; they’ll finish cooking in the soup.
- Choose small pasta shapes so they don’t overpower the meatballs.
- Partially blend the tomatoes for a thicker, heartier texture.
Serving Suggestions
Serve this Meatball Soup hot with extra Parmesan shaved directly from the block at the table and a sprinkle of fresh parsley. A crisp Beet Salad with Goat Cheese and Walnuts makes a bright, refreshing starter before the soup, and toast up a slice of Potato Cheese Bread to go with it. A crusty loaf of bread or garlic toast also makes a great accompaniment for soaking up the rich broth.

Storage
Store cooled leftovers in an airtight container in the refrigerator for up to 4 days. Reheat gently on the stovetop over medium-low heat, adding a splash of broth if needed, as the pasta will continue to absorb liquid.

Homestyle Meatball Soup
Ingredients
Meatballs
- 1 large egg beaten
- ½ cup milk
- ½ cup breadcrumbs
- ¼ cup Parmesan cheese grated
- 3 cloves garlic finely chopped
- 1 teaspoon salt
- ½ teaspoon black pepper
- ½ pound ground beef
- ½ pound ground pork
Soup
- 2 tablespoons olive oil divided
- 1 cup yellow onion diced
- ½ cup bell peppers diced
- 3 cloves garlic minced
- 2 tablespoons tomato paste
- 3 cups chicken broth
- 2 cups beef broth
- 29 ounce diced tomatoes or 2 (14.5-ounce) cans, undrained
- ½ cup heavy whipping cream
- 2 cups spinach or kale sliced thin
- 1 cup dry pasta
- 1 teaspoon dried oregano
- 1 pinch red pepper flakes
- Salt and black pepper to taste
Instructions
For the Meatballs
- Whisk the egg and milk in a large bowl. Add the breadcrumbs and stir for 1 to 2 minutes until a paste forms.
- Stir in the Parmesan cheese, garlic, salt, and pepper until combined. Add the ground beef and ground pork and gently mix just until incorporated, taking care not to overwork the meat.
- Roll the mixture into ½-inch meatballs and set aside.
- Heat 1 tablespoon of olive oil in a 4½-quart soup pot or Dutch oven over medium-high heat.
- Brown the meatballs in batches for 2 to 3 minutes, turning gently. Add a small splash of olive oil as needed and reduce the heat slightly if they brown too quickly. The meatballs will finish cooking in the soup. Remove and set aside.
For the Soup
- Place the diced tomatoes in a large bowl and blend with an immersion blender or mash with a potato masher to your desired texture. Leave some chunks if preferred. Set aside.
- Add the remaining olive oil to the same soup pot over medium-low heat. Add the diced onions and cook for 6 to 8 minutes, or until softened.
- Add the bell peppers and cook for 4 minutes. Stir in the garlic, tomato paste, oregano, and red pepper flakes. Cook for 1 minute until fragrant.
- Add the chicken broth, beef broth, and reserved tomatoes. Bring to a boil, then reduce to a simmer. Simmer uncovered for 15 minutes.
- Stir the soup and bring it back to a gentle boil. Add the meatballs and pasta, then return to a gentle boil. Cook until the pasta is tender, following package instructions.
- Reduce the heat to low and stir in the heavy cream. Add the spinach and cook until wilted, about 1 minute.
- Transfer to serving bowls, garnish with Parmesan and parsley, and serve.
Notes
Chef Jenn’s Tips
- Keep meatballs small so they fit easily on a spoon with broth and pasta.
- Lightly brown the meatballs; they’ll finish cooking in the soup.
- Choose small pasta shapes so they don’t overpower the meatballs.
- Partially blend the tomatoes for a thicker, heartier texture.
Nutrition
A Note on Nutritional Information
Nutritional information for this recipe is provided as a courtesy and is calculated based on available online ingredient information. It is only an approximate value. The accuracy of the nutritional information for any recipe on this site cannot be guaranteed.
Add Preferred Source