In a large pot or Dutch oven, heat a little oil over medium heat. Add the Italian sausage and cook until browned, breaking it up with a wooden spoon as it cooks, about 5-7 minutes. Drain excess fat if necessary.
Add the chopped onion, garlic, carrots, and celery to the pot. Cook for about 5 minutes, stirring occasionally, until the vegetables are softened.
Stir in the diced tomatoes (with juice) and chicken broth. Bring the mixture to a boil, then reduce the heat and let it simmer for about 15 minutes.
After the soup has simmered, stir in the heavy cream, grated Parmesan cheese, dried Italian herbs, and spinach if using. Simmer for an additional 5 minutes until the spinach wilts and the cheese is melted.
Season the soup with salt and pepper to taste. If desired, garnish with fresh parsley before serving.
For a thicker soup, you can blend a portion of the soup and then return it to the pot.
This soup pairs well with crusty bread or a side salad.
It keeps well in the refrigerator for up to 3 days and is also freezer-friendly; just add a little extra broth when reheating to thin it out.