Ingredients
– 8 oz lean ground beef (80 to 90% lean) provides the hearty base with just enough fat for juicy meatballs
– 8 oz ground pork (or additional 8 oz ground beef if pork unavailable) adds richness and depth to the meatball mixture
– 1/2 cup fresh white bread crumbs made from rustic bread binds the meatballs while keeping them tender
– 1/4 cup chopped fresh parsley brings bright, fresh flavor to balance the richness
– 1 1/2 tsp minced fresh oregano or 3/4 tsp dried oregano delivers that classic Italian herb profile
– 1/2 cup finely shredded Parmesan adds savory umami and helps bind the meatballs
– 1 egg acts as a binder to hold meatballs together during cooking
– 1 tsp salt seasons the meatballs from within
– 1/4 tsp black pepper adds subtle warmth and depth
– 1 Tbsp olive oil for browning the meatballs
– 1 Tbsp olive oil for sautéing the aromatic vegetables
– 1 1/4 cups chopped carrots adds natural sweetness and vibrant color
– 1 1/4 cups chopped onions provides the savory foundation
– 3/4 cup chopped celery contributes aromatic depth and texture
– 4 cloves garlic, minced (about 1 1/2 Tbsp) essential for that authentic Italian flavor
– 5 cans (14.5 oz each) low-sodium chicken broth (about 8.75 cups) creates a rich, flavorful soup base
– 1 cup dry acini di pepe pasta (or substitute with orzo, ditalini, pastina, or small macaroni) adds satisfying texture and heartiness
– 6 oz loosely chopped fresh spinach provides color, nutrition, and fresh flavor
– Additional finely shredded Parmesan for serving the perfect finishing touch
Instructions
1-Step 1: Prepare the Meatball Mixture Start by combining the meatball ingredients in a large bowl. Add the 8 oz lean ground beef and 8 oz ground pork to the bowl. Add 1/2 cup fresh white bread crumbs made from rustic bread, 1/4 cup chopped fresh parsley, 1 1/2 tsp minced fresh oregano (or 3/4 tsp dried oregano), 1/2 cup finely shredded Parmesan, 1 egg, 1 tsp salt, and 1/4 tsp black pepper. Gently combine all ingredients by hand, being careful not to overwork the mixture. Overmixing can make meatballs tough and dense. The goal is a light, tender texture that holds together when shaped. Form the mixture into small meatballs, approximately 3/4 to 1 inch in diameter. You should get about 40-50 small meatballs from this mixture. Making them bite-sized ensures even cooking and makes the soup easier to eat.
2-Step 2: Brown the Meatballs Heat 1 Tbsp olive oil in a non-stick skillet over medium-high heat. Working in batches to avoid overcrowding the pan, add the meatballs in a single layer. Brown them for about 4 minutes total, turning them carefully to brown all sides evenly. Browning meatballs first adds deeper flavor through the Maillard reaction, which creates complex, savory notes that simply boiling them cannot achieve. Once browned, remove the meatballs from the skillet and drain them on paper towels. They will finish cooking in the soup, so they do not need to be cooked through at this stage. Browning in batches prevents the meatballs from steaming instead of searing. This step is what separates an exceptional authentic Italian wedding soup recipe from an ordinary one.
3-Step 3: Build the Soup Base In a large pot or Dutch oven, heat 1 Tbsp olive oil over medium-high heat. Add the aromatics: 1 1/4 cups chopped carrots, 1 1/4 cups chopped onions, and 3/4 cup chopped celery. This combination, known as soffritto in Italian cooking, forms the aromatic foundation of the soup. Sauté the vegetables for 6-8 minutes until softened and the onions become translucent. Add 4 cloves of minced garlic (about 1 1/2 Tbsp) and cook for 1 more minute, stirring constantly to prevent burning. The garlic adds that essential Italian flavor profile. Be careful not to let it brown too much, as burnt garlic becomes bitter. The kitchen should now smell absolutely wonderful!
4-Step 4: Add Broth and Seasonings Pour in 5 cans (14.5 oz each) of low-sodium chicken broth, which equals about 8.75 cups. Using low-sodium broth gives you control over the final salt level. Season with additional salt and pepper to taste, keeping in mind that the Parmesan garnish will add some saltiness at serving time. Bring the mixture to a boil over high heat.
5-Step 5: Add Pasta and Meatballs Once the broth reaches a boil, stir in 1 cup of dry acini di pepe pasta and add the browned meatballs. Reduce heat to medium-low, cover the pot, and simmer for about 10 minutes. Stir occasionally to prevent the pasta from sticking to the bottom of the pot. The pasta will absorb some of the broth’s flavor while releasing starch that slightly thickens the soup. Cook until the pasta is tender and the meatballs are cooked through (internal temperature of 165°F). The meatballs will float when fully cooked, which is a helpful visual cue. If you prefer a brothier soup, use less pasta or add more broth when reheating leftovers.
6-Step 6: Add Fresh Spinach Add 6 oz of loosely chopped fresh spinach in the final minute of cooking. The residual heat will wilt the spinach perfectly without overcooking it, preserving its bright green color and fresh taste. Stir gently to distribute the spinach throughout the soup.
7-Step 7: Serve and Enjoy Ladle the hot soup into bowls and top generously with additional finely shredded Parmesan cheese. The cheese melts slightly into the hot broth, adding richness and savory depth. Serve immediately with crusty bread for a complete, satisfying meal. This homemade Italian wedding soup serves 6-8 people and pairs beautifully with a simple green salad.
Last Step:
Please leave a rating and comment letting us know how you liked this recipe! This helps our business to thrive and continue providing free, high-quality recipes for you.Notes
🔥 Brown meatballs first for richer, deeper flavor.
⚪ Keep meatballs small (¾-inch) for even soup distribution.
🌿 Use fresh herbs and rustic bread crumbs for authentic taste.
- Prep Time: 25 minutes
- Cook Time: 25 minutes
- Category: Soup
- Method: Stovetop
- Cuisine: Italian
Nutrition
- Serving Size: about 2 cups
- Calories: 396 kcal
- Sugar: 4g
- Sodium: 362mg
- Fat: 20g
- Saturated Fat: 6g
- Unsaturated Fat: 14g
- Trans Fat: 0g
- Carbohydrates: 25g
- Fiber: 3g
- Protein: 29g
- Cholesterol: 85mg
