Heat a large pot or Dutch oven over medium-high heat. Add the olive oil, then add the Italian sausage. Break it into smaller pieces with a wooden spoon as it cooks until browned, about 5-7 minutes.
Add the diced onion, carrots, and celery to the pot with the sausage. Cook until the vegetables begin to soften, about 5 minutes, stirring occasionally.
Stir in the minced garlic, Italian seasoning, and red pepper flakes (if using). Cook for another 30 seconds until fragrant.
Add the diced potatoes and chicken broth to the pot. Bring to a boil, then reduce heat to maintain a gentle simmer.
Cover and simmer for about 15-20 minutes, or until the potatoes are tender when pierced with a fork.
Reduce heat to low and stir in the heavy cream or half-and-half. Allow the soup to gently warm through, but don't let it boil after adding the dairy.
Add the chopped spinach or kale, and cook for another 2-3 minutes until the greens are wilted but still bright.
Stir in the fresh parsley and thyme. Season with salt and black pepper to taste, keeping in mind that the sausage and broth already contain salt.
Ladle into bowls and top with grated Parmesan cheese and additional fresh herbs if desired. Serve with crusty bread for dipping.