Cook the vegetables. Heat the butter and olive oil in a large Dutch oven over medium heat. Add the onion, carrots, and celery. Cook for 7 to 9 minutes, stirring occasionally, until softened. Lower the heat if they begin to brown quickly.
Add garlic and thyme. Stir in the garlic and thyme and cook for about 30 seconds, until fragrant.
Stir in flour. Sprinkle the flour over the vegetables. Cook, stirring constantly, for 1 minute, until no dry flour remains.
Add broth. Gradually stir in the first cup of broth, scraping the bottom of the pot and smoothing out flour lumps. Stir in the remaining 4 cups broth and the black pepper.
Simmer the base. Bring to a gentle simmer and cook for about 5 minutes, or until the carrots are nearly tender. Allow more time if needed before adding the gnocchi.
Cook the gnocchi. Add the gnocchi and stir gently. Simmer according to the package directions, usually about 3 to 5 minutes, until tender with no hard center.
Finish the soup. Reduce the heat to low. Add the chicken, cream, and spinach. Cook for about 3 to 5 minutes, stirring gently, until the spinach wilts and the soup is hot throughout. If using refrigerated leftover chicken, confirm it reaches 165°F.
Season and serve. Remove from the heat. Stir in the optional Parmesan. Taste, then add salt, extra pepper, and optional lemon juice as needed. Thin with extra broth if desired and serve promptly.