Go Back

Rustic Parmesan Meatball & White Bean Tomato Soup

A cozy weeknight lifesaver that combines hearty meatballs, creamy white beans, and bright tomatoes into a comforting bowl.
Prep Time 20 minutes
Cook Time 35 minutes
Total Time 55 minutes
Servings: 6 servings
Course: Main Course, Soup
Cuisine: Italian
Calories: 450

Ingredients
  

For the Meatballs
  • 1 lb ground beef or mix beef+pork for extra richness
  • 1/2 cup grated Parmesan
  • 1/2 cup plain breadcrumbs or panko
  • 1 large egg
  • 2 cloves garlic, minced
  • 2 tbsp chopped fresh parsley
  • 1/2 tsp salt
  • 1/4 tsp black pepper
  • 1/2 tsp dried oregano
  • 1 tbsp olive oil for browning
For the Soup
  • 1 tbsp olive oil
  • 1 medium yellow onion, diced
  • 2 medium carrots, peeled and diced
  • 2 stalks celery, diced
  • 3 cloves garlic, minced
  • 1 28-oz can crushed tomatoes
  • 4 cups low-sodium chicken or vegetable broth
  • 1 15-oz can cannellini or great northern beans, drained and rinsed
  • 1 tsp dried basil or 1 tbsp fresh
  • 1/2 tsp red pepper flakes optional
  • to taste Salt and black pepper
  • 2 cups baby spinach optional
  • to serve Freshly grated Parmesan and chopped parsley
  • as needed Crusty bread for dunking

Method
 

Make the Meatball Mixture
  1. In a large bowl, combine ground beef, grated Parmesan, breadcrumbs, egg, minced garlic, parsley, salt, pepper, and oregano. Mix gently — overworking makes dense meatballs.
  2. Form into small meatballs, about 1 to 1 1/4 inches across. You should have roughly 20–24 meatballs.
Brown the Meatballs
  1. Heat 1 tbsp olive oil in a large Dutch oven or deep skillet over medium-high heat.
  2. Brown the meatballs in batches for 2–3 minutes per side until they have a golden crust. They don’t need to be fully cooked through. Transfer to a plate and set aside.
Build the Soup Base
  1. In the same pot, add 1 tbsp olive oil if needed. Sauté the onion, carrots, and celery over medium heat until softened, about 6–8 minutes.
  2. Add the garlic and cook for 30–60 seconds until fragrant.
Add Tomatoes, Broth, and Beans
  1. Pour in the crushed tomatoes and broth, scraping up any browned bits from the bottom of the pot.
  2. Stir in the drained beans, Parmesan rind, dried basil, and red pepper flakes if using. Bring to a gentle simmer.
Simmer with Meatballs
  1. Return the browned meatballs to the pot. Simmer for 12–15 minutes, until meatballs are cooked through and the flavors have melded.
  2. Taste and adjust salt and pepper. If you want a silkier texture, lightly mash some beans against the side of the pot with a spoon.
Finish and Serve
  1. Stir in baby spinach until wilted, if using.
  2. Ladle into bowls and top with freshly grated Parmesan and chopped parsley. Serve with crusty bread for dunking.

Notes

Make-ahead: You can form meatballs and refrigerate them overnight. Cook from chilled and add a few extra simmer minutes. Use store-bought frozen meatballs to save time. Vegetarian option: Swap meatballs for roasted chickpeas or store-bought plant-based meatballs. If you're grilling vegetables, they pair beautifully with the soup.