Gathering Ingredients
Core ingredients and quantities
- 1 lb (450 g) mixed ground meat (beef and pork) for meatballs
- 1 medium onion, finely diced
- 2 carrots, peeled and diced
- 2 celery stalks, diced
- 3 cloves garlic, minced
- 1 can (14 oz) diced tomatoes
- 4 cups (1 L) low-sodium chicken or vegetable broth
- 1 cup small pasta (ditalini or small shells)
- 1 can (15 oz) cannellini or kidney beans, drained
- 2 tbsp olive oil
- Salt and freshly ground black pepper to taste
- 1/4 cup grated Parmesan for serving
- Fresh basil or parsley for finishing
Meatball binder and seasoning
- 1/2 cup fresh breadcrumbs or panko
- 1 large egg, lightly beaten
- 2 tbsp grated Parmesan packed into the mix
- 1 tsp kosher salt and 1/2 tsp black pepper
- 1 tsp dried oregano or 1 tbsp chopped fresh parsley
Equipment and prep notes
- Large heavy-bottomed pot or Dutch oven (5–6 qt)
- Large sauté pan for browning (optional but recommended)
- Slotted spoon, wooden spatula, ladle
- Measuring cups and spoons; fine-mesh sieve for rinsing beans
Ingredient selection tips
Use mixed ground meat for fat and flavor; lean-only meat makes firmer, drier meatballs. Choose small pasta for even distribution in each bowl; add pasta late to avoid overcooking. Use low-sodium broth to control final salt; taste before adding salt.
Meatball Mixture and Shaping
Mixing the meatball base
Combine ground meat, breadcrumbs, egg, grated Parmesan, salt, pepper, and oregano in a chilled bowl to keep the fat firm; chilling reduces sticky bindings and prevents overworked meat. Use a fork to gently incorporate ingredients—avoid kneading to keep meatballs tender and avoid dense texture.
Texture check
Press a small pinch between fingers: it should hold together without feeling gummy. If mixture feels loose, add 1–2 tablespoons more breadcrumbs; if dry, add a teaspoon of water or a splash of milk.
Shaping consistent meatballs
Use a 1-tablespoon scoop or a small cookie scoop to portion; roll gently between palms to form uniform spheres. Uniform size ensures even cooking and consistent timing when browning and simmering. Place shaped meatballs on a rimmed tray lined with parchment and refrigerate 10–15 minutes to firm up before cooking.
Mini vs. standard size
For minestrone choose mini meatballs (about 3/4 to 1 inch) so they remain tender and cook quickly in broth. Larger meatballs require longer simmering that can over-soften vegetables. For a 1 lb mix expect about 30–36 mini meatballs.
Flavor variations
Add 1 tsp lemon zest for brightness, a pinch of red pepper flakes for heat, or swap half the meat for Italian sausage for more fat and seasoning. Always adjust final salt after simmering.
Vegetable Preparation and Mise en Place
Chopping and size consistency
Dice onion, carrot, and celery to roughly the same size (about 1/4–1/2 inch dice) so they soften evenly during sauté. Mince garlic finely and add at the end of the sauté to avoid burning. If using zucchini or potatoes, cut to the same scale as other vegetables.
Order of prep
1) Rinse and drain beans; 2) measure pasta and keep separate; 3) grate Parmesan and chop herbs; 4) portion spices and salt. Having everything ready before heating the pot limits overcooking.
Vegetable variations and substitutions
Use seasonal vegetables—leafy greens like Swiss chard or spinach are added last and wilt quickly; sturdy greens like kale need a few minutes to soften. Swap cannellini beans for chickpeas for a nuttier bite. If using fresh tomatoes in season, peel and chop and reduce added canned tomatoes by 1/2 cup broth.
Prep tips to retain texture
Blanch root vegetables for 1–2 minutes if you prefer them very tender, or reserve adding them until after initial simmer to maintain bite. Rinse pasta under cold water only if you plan to cool and store; otherwise keep dry measured and add directly to simmering broth for best starch incorporation.
Cold vs room temperature vegetables
Bring hardy vegetables closer to room temperature before adding to hot fat to prevent temperature shock and uneven cooking.
Cooking Process: Browning, Sautéing, and Simmering
Browning meatballs for flavor
Heat 2 tablespoons olive oil in a sauté pan over medium-high heat until shimmering. Brown meatballs in batches to avoid crowding; aim for a deep golden crust on at least one side—this creates fond that deepens broth flavor. Remove meatballs with a slotted spoon to a tray; do not fully cook through at this stage to prevent drying.
Sautéing the soffritto
In the large pot, add 1 tablespoon oil and sweat onion, carrot, and celery over medium heat until translucent and starting to caramelize, 7–10 minutes. Add garlic and cook 30–60 seconds until fragrant; deglaze with 1/2 cup white wine or a splash of broth to lift browned bits.
Building the broth
Add canned tomatoes and their juices, stir and simmer 3–5 minutes to break down tomato chunks. Add the reserved browned meatballs and any accumulated juices to the pot. Pour in 4 cups of low-sodium broth and bring to a gentle simmer; avoid rolling boil to keep meatballs tender. Skim any excess fat or foam in the first 5 minutes for a clearer broth.
Simmer times and temperature
Reduce to low and simmer covered for 15 minutes to cook meatballs and start softening vegetables. Stir gently once or twice to prevent sticking. After initial simmer, add beans and pasta according to their cook times—add pasta 8–10 minutes before serving for al dente; canned beans can be added 5 minutes before serving to heat through without breaking apart.
Finishing checks
Test one meatball by cutting: center should be just cooked and juices clear. Taste broth and adjust salt, add pepper, and a squeeze of lemon if the soup needs brightness.
Pasta, Beans, and Timing
Choosing and timing pasta
Select small shapes such as ditalini, small shells, or small elbows so each spoonful includes pasta. Dry pasta added directly to the simmering pot will release starch to slightly thicken broth. Add pasta 8–10 minutes before serving and test for al dente at the earlier end of the time; reserve a small amount of hot broth to thin the soup if pasta absorbs too much.
Beans: when and how to add
Use canned beans for convenience; rinse and add them 5 minutes before serving to warm through without breaking. If using dried beans pre-cooked, add at the same stage. Avoid adding beans at the very start of simmering as they will disintegrate if boiled for too long and can cloud the broth.
Pasta alternatives
For gluten-free options use short GF pasta and shorten cook time by 1–2 minutes and test early. For grain alternatives use farro or barley—pre-cook separately or add earlier and simmer until tender, 20–30 minutes depending on grain.
Starch management and thickening
If the soup becomes too thick from pasta starch, stir in reserved hot broth by 1/4-cup increments to reach desired consistency. To slightly thicken without adding starch, mash a few beans against the pot side with a spoon to release body while keeping texture.
Serving tip for leftovers
Cook pasta separately if you expect leftovers; add freshly cooked pasta to portions when reheating to preserve texture.
Seasoning, Acids, and Finishing Touches
Final seasoning steps
Always finish with a taste test: add salt gradually and remember salty toppings like Parmesan will increase perceived saltiness. Add freshly ground black pepper to taste. If broth tastes flat, add a teaspoon of better-quality broth concentrate or a pinch of sugar to balance acidity from tomatoes.
Acidity and brightness
A small splash of red or white wine vinegar or the juice of 1/2 lemon brightens flavors—add a teaspoon at a time and taste. Acid should lift the soup and highlight meatball seasoning without becoming sour.
Herbs and oil
Add chopped fresh parsley or basil at the end to preserve fragrance. For a richer finish, drizzle 1 teaspoon good quality extra-virgin olive oil per bowl just before serving. To replicate restaurant finish, sprinkle grated Parmesan and a grind of black pepper at the table.
Adjusting texture and creaminess
For a slightly creamier mouthfeel, stir in 2 tablespoons of reserved starchy pasta water or a tablespoon of unsalted butter off heat. Avoid heavy cream to keep the soup traditionally brothy.
Allergen and dietary notes
For dairy-free servings omit Parmesan and use nutritional yeast or additional herbs; for vegetarian version replace meatballs with seasoned lentil balls or pan-fried gnocchi and use vegetable stock.
Serving, Pairing, and Storage
Portioning and serving temperature
Serve minestrone hot, ladled into warmed bowls. Aim for 165°F (74°C) serving temperature; hot bowls help maintain temperature while eating. Garnish each bowl with a sprinkle of grated Parmesan and torn basil or parsley; if using chili flakes, present separately for diners who want heat.
Bread and wine pairing
Pair with crusty bread or focaccia to soak broth. For wine, choose a light to medium-bodied red such as Chianti or a dry rosé; avoid very tannic wines that will clash with tomato and meat flavors.
Storing and reheating
Cool soup quickly by dividing into shallow containers and refrigerate within 2 hours. Stored in the refrigerator up to 3 days. Reheat gently over medium-low heat; if soup was prepared with pasta inside, expect pasta to absorb broth—add 1/4–1/2 cup hot broth or water when reheating to restore consistency. For longer storage, freeze without pasta for up to 3 months and add freshly cooked pasta when serving.
Make-ahead strategy
Prepare meatballs and soffritto a day ahead and refrigerate separately. Assemble and simmer soup before serving, adding pasta at the last minute for best texture. Alternatively, pre-cook pasta al dente and store in oil-lined container to mix into bowls at service.
Reheating tips
Reheat over low heat to avoid breaking beans and disintegrating meatballs; cover and stir occasionally until center of largest meatball registers 165°F (74°C).
FAQs
How can I keep meatballs tender?
Use a combination of meats with some fat (beef/pork or add a bit of ricotta), avoid overworking the mixture, use breadcrumbs and egg as binders, and brown quickly over medium-high heat then simmer gently rather than boiling vigorously.
Can I make minestrone vegetarian?
Replace meatballs with seasoned lentil or mushroom balls, use vegetable broth, and increase beans and root vegetables; add a splash of soy sauce or miso for umami if needed.
Should I cook pasta in the soup or separately?
For immediate service, cook pasta directly in soup and add near the end. For leftovers, cook pasta separately and add to bowls when serving to prevent it from absorbing broth during storage.
How to prevent beans from falling apart?
Add canned beans late in cooking (last 5 minutes). If using soaked and cooked dried beans, add them in the last 10 minutes and stir gently; avoid high agitation.
Can I freeze the soup with meatballs?
Yes, but for best texture freeze without pasta. Meatballs freeze well; thaw overnight in refrigerator and reheat slowly, adding fresh pasta after reheating.
How to adjust salt after cooking?
Add salt incrementally and taste after each addition; a small splash of acid (vinegar or lemon) can enhance perceived saltiness without increasing sodium. Finish with grated Parmesan at the table as an optional salty garnish.
Minestrone with Meatballs
Warm up with a hearty minestrone soup topped with savory homemade meatballs — perfect for family dinners!
total time
50
servings
6
calories
470 kcal
ingredients
- Ground beef for meatballs – 500 g 🥩
- Breadcrumbs – 1/2 cup 🍞
- Egg – 1 large 🥚
- Parmesan cheese, grated – 1/4 cup 🧀
- Garlic, minced – 3 cloves 🧄
- Olive oil – 2 tbsp 🫒
- Onion, chopped – 1 medium 🧅
- Carrot, diced – 2 medium 🥕
- Celery stalks, diced – 2 stalks 🥬
- Zucchini, diced – 1 medium 🥒
- Canned crushed tomatoes – 400 g (1 can) 🍅
- Vegetable or beef broth – 1500 ml 🥣
- Cannellini beans, drained – 1 cup 🥫
- Small pasta (ditalini) – 1 cup 🍜
- Fresh spinach – 2 cups 🥬
- Fresh basil, chopped – 1/4 cup 🌿
- Salt – 1 tsp 🧂
- Black pepper – 1/2 tsp 🧂
- Red pepper flakes (optional) – 1/4 tsp 🌶️
instructions
- In a bowl combine ground beef, breadcrumbs, egg, grated parmesan, 1 clove minced garlic, 1/2 tsp salt and 1/4 tsp pepper; mix and form small meatballs.
- Heat 1 tbsp olive oil in a large pot over medium heat and brown meatballs on all sides; remove and set aside.
- Add remaining 1 tbsp olive oil to the pot and sauté chopped onion, remaining garlic, carrot and celery until softened, about 5 minutes.
- Stir in diced zucchini and crushed tomatoes, then pour in the broth and bring to a simmer.
- Return meatballs to the pot, cover and simmer gently for 15–20 minutes until meatballs are cooked through.
- Add cannellini beans and pasta and cook until pasta is al dente, about 8–10 minutes.
- Stir in fresh spinach and basil and cook 1–2 minutes until spinach wilts.
- Adjust salt and pepper to taste, serve hot and sprinkle with extra parmesan if desired.