Brown the Italian sausage in a large pot or Dutch oven over medium heat. Break the sausage into small pieces as it cooks. Drain off excess grease.
Add the olive oil, onion, carrots, and celery to the pot with the sausage. Cook until vegetables soften, about 5 to 7 minutes.
Stir in the minced garlic and cook for 1 minute until fragrant.
Add the cubed potatoes, chicken broth, Italian seasoning, salt, and pepper to the pot. Bring the mixture to a boil, then reduce heat, cover, and simmer for 15 minutes, or until potatoes are tender.
In a small bowl, whisk the flour with 1/2 cup of water until smooth to create a slurry. Pour the slurry into the simmering soup, stirring constantly until the soup thickens slightly.
Reduce the heat to low. Stir in the heavy cream and Parmesan cheese. Heat through, but do not let the soup boil after adding the cream.
Stir in the fresh spinach until it wilts into the soup.
Taste and adjust seasoning if needed. Serve hot with crusty bread.
Notes
For a low-carb option, substitute the potatoes with cauliflower florets or omit them and add more vegetables like kale.
If you prefer a thinner soup, reduce the amount of flour used in the slurry or add more broth.
Use spicy Italian sausage for a kick, or sweet Italian sausage for a milder flavor.