In a large pot or Dutch oven, melt 2 tablespoons unsalted butter with 1 tablespoon olive oil over medium heat.
Add 1 finely diced yellow onion, 2 finely diced celery stalks, and 1 finely diced carrot and cook for 5–7 minutes, stirring occasionally, until softened and lightly golden.
Stir in 3 minced garlic cloves and cook for 1 minute until fragrant.
Sprinkle 1/4 cup all‑purpose flour over the vegetables and stir constantly for 1–2 minutes to form a light roux.
Gradually pour in 4 cups low‑sodium chicken broth, stirring as you go to dissolve any lumps.
Bring the mixture to a gentle simmer, then add 1 teaspoon dried thyme, 1/4 teaspoon ground nutmeg, salt, and freshly ground black pepper to taste.
Let the soup simmer for 10–15 minutes so the vegetables finish softening and the flavors meld.
Stir in 2 cups half‑and‑half (or 1 cup heavy cream plus 1 cup milk) and let the soup warm through without boiling.
Add 2 cups shredded cooked chicken and cook just until heated through.
Drop in the 1 (16‑ounce) package refrigerated potato gnocchi and simmer for 3–5 minutes, or until the gnocchi are soft and float to the surface.
Stir in 1 cup roughly chopped fresh spinach until wilted.
Add 1/4 cup freshly grated Parmesan cheese and stir until melted; taste and adjust salt, pepper, and nutmeg as needed.