In a mixing bowl, combine the ground meat with breadcrumbs, grated Parmesan cheese, egg, minced garlic, Italian seasoning, and a pinch of salt and pepper. Use your hands or a fork to mix until all ingredients are thoroughly combined, ensuring a uniform mixture.
With your hands, roll the meat mixture into small meatballs, approximately 1 inch in diameter. Place the meatballs on a plate or a baking sheet and set aside.
Heat the olive oil in a large pot or Dutch oven over medium heat. Once hot, add the diced onion, carrots, and celery to the pot. Sauté the vegetables for about 5 minutes, or until they become fragrant and tender.
Gently add the meatballs into the pot, being careful not to overcrowd them. Brown the meatballs on all sides for about 5-7 minutes. You may need to do this in batches to ensure they cook evenly.
Once the meatballs are browned, pour in the chicken broth and add the undrained diced tomatoes. Stir everything together and bring the mixture to a gentle simmer.
Allow the soup to cook for about 15 minutes, giving the meatballs enough time to cook through and absorb the flavors.
After 15 minutes, stir in the heavy cream, allowing it to combine smoothly with the broth. Let the soup simmer for an additional 5 minutes, which will give it a luscious, creamy texture.
Incorporate the chopped fresh spinach into the soup, cooking for just about 2 minutes or until the spinach is wilted and vibrant.
Taste the soup and adjust the seasoning with additional salt and pepper, if desired.
Ladle the hot soup into bowls, garnishing each serving with a few fresh basil leaves for an aromatic finish.