In a large pot, heat the butter and olive oil over medium heat.
Add the onion, carrots, celery, and garlic. Season with salt and pepper.
Cook for about 10 minutes, stirring occasionally, until the vegetables are soft and fragrant.
Sprinkle in the flour and stir well to coat the vegetables. Cook for about 3 minutes to remove the raw flour taste.
Slowly pour in the chicken broth, about 1 cup at a time, stirring constantly to keep the mixture smooth.
Stir in the half and half until fully combined.
Add the cooked chicken and bring the soup to a gentle simmer.
Let it simmer for about 20 minutes, stirring occasionally, until slightly thickened.
Meanwhile, cook the gnocchi according to package instructions, then drain.
Add the cooked gnocchi and spinach to the soup.
Simmer for a few minutes until the spinach wilts and the gnocchi are heated through.
Stir in the fresh basil and adjust seasoning if needed.
Serve warm with freshly grated cheese on top.