Heat olive oil in a skillet over medium heat. Add the minced onion and cook until soft and translucent. Stir in the garlic and cook briefly until fragrant.
Allow the mixture to cool slightly before adding it to the meatball mixture. This prevents the egg from cooking prematurely and helps the flavors blend evenly.
In a large bowl, combine the egg, Parmesan cheese, breadcrumbs, milk, parsley, Italian seasoning, salt, and pepper. Stir well until the ingredients are evenly mixed.
Let the mixture sit for a few minutes so the breadcrumbs absorb the liquid. This creates softer and more tender meatballs.
Add the ground pork, Italian sausage, and cooled onion mixture to the bowl. Mix gently until everything is fully combined.
Roll the mixture into small bite-sized meatballs. Keeping them small makes them easier to eat and ensures they cook evenly in the soup.
Arrange the meatballs on a parchment-lined baking sheet. Leave a little space between each one for even cooking.
Broil for about 8 minutes or until fully cooked and lightly browned. This method creates great flavor without the mess of frying.
In a large soup pot, heat olive oil over medium heat. Add onions and cook until softened and slightly caramelized.
Stir in garlic, carrots, celery, and mushrooms. Cook until the vegetables begin to release moisture and develop a deeper flavor.
Pour in the beef stock and add the Italian seasoning and red pepper flakes. Stir everything together well.
Add the cooked meatballs to the pot and bring the mixture to a gentle simmer. Let the flavors blend together for about 10 minutes.
Stir in the fresh spinach, heavy cream, Parmesan cheese, and parsley. Mix gently until the cheese melts into the broth.
Allow the soup to simmer for another 5 minutes. The broth will become rich, creamy, and beautifully flavorful.
Taste the soup and adjust the salt and pepper as needed. Every broth differs slightly, so seasoning at the end is important.
Serve the soup hot with crusty bread, garlic toast, or a simple green salad for a complete meal.