First, prepare the meatballs: In a large bowl, combine the beaten egg, heavy cream, Italian breadcrumbs, grated Parmesan, diced garlic, salt, and pepper. Add the ground beef and ground pork. Mix gently until just combined, being careful not to overmix.
Roll the mixture into 1-inch meatballs. You should get about 30-35 meatballs.
In a large soup pot or Dutch oven, heat a drizzle of olive oil over medium-high heat. Brown the meatballs in batches for 2-3 minutes until nicely colored on all sides. They don’t need to be cooked through. Remove the browned meatballs and set aside.
In the same pot, melt the butter over medium-low heat. Add the diced yellow onion and cook slowly for about 10 minutes until slightly caramelized.
Add the diced bell peppers and cook for another 4 minutes.
Stir in the minced garlic, tomato paste, hot sauce (if using), Worcestershire sauce, and any additional seasonings like Italian herbs. Cook for 1 minute until fragrant.
Pour in the chicken broth, beef broth, and undrained diced tomatoes. Bring the soup to a boil, then reduce the heat to a simmer. Let it simmer uncovered for 15 minutes, or longer to develop a richer flavor, stirring occasionally.
Return the browned meatballs to the soup. Add the dry pasta and cook according to package directions until al dente.
Stir in the heavy cream and baby spinach until the spinach wilts. Season the soup with additional salt and pepper to taste.