Sauté the aromatics: In a large pot or Dutch oven, heat 2 tablespoons olive oil or butter over medium heat. Add diced onion, carrots, and celery.
Cook 5–7 minutes until softened. Stir in garlic and cook 30 seconds until fragrant.
Make a quick roux: Sprinkle the flour over the vegetables and stir to coat. Cook 1–2 minutes.
This helps the soup thicken and gives a silky texture.
Add broth and season: Slowly whisk in chicken broth to avoid lumps. Add Italian seasoning, bay leaf, 1 teaspoon salt, and a few grinds of pepper. Bring to a gentle simmer.
Add the chicken: Stir in shredded or diced cooked chicken.
If starting with raw chicken, simmer small pieces in the broth until cooked through, then remove and shred before returning to the pot.
Simmer to meld flavors: Let the soup bubble on low for about 10 minutes to marry the flavors and thicken slightly.
Cook the gnocchi: Add the gnocchi straight to the pot. Simmer 2–3 minutes, or until the gnocchi float and are tender.
Add cream and greens: Reduce the heat to low. Stir in heavy cream and the chopped spinach.
Warm through until the spinach wilts, about 2 minutes. Do not boil after adding cream.
Taste and adjust: Remove the bay leaf. Taste for salt and pepper.
For a little kick, add a pinch of red pepper flakes.
Finish and serve: Ladle into bowls and top with freshly grated Parmesan. Serve with crusty bread for dipping.