Dice the onion, carrots, and celery into uniform pieces (about 1/4-inch) so they cook evenly. Mince the garlic, chop the sun-dried tomatoes into 1/4-inch strips, and chiffonade the basil. Melt butter and sun-dried tomato oil together in a large pot over medium heat. Once foaming, add the diced onion, carrots, and celery along with salt, pepper, garlic herb seasoning, herbs de provence, and red pepper flakes. Cook for 5 minutes, stirring occasionally, until the vegetables begin to soften and release their aromatics.
Stir the sun-dried tomatoes and tomato paste into the softened vegetables and cook for 3 minutes, allowing the paste to caramelize slightly and deepen the flavors. Add the minced garlic and cook for just 1 minute more—this timing prevents the garlic from burning while allowing it to infuse its flavor into the base. I always add garlic near the end of the aromatic phase because it can turn bitter if cooked too long.
Pour in the chicken broth and heavy cream, stirring to combine. Bring the mixture to a gentle boil over medium-high heat. The cream will create a rich, velvety base while the broth provides the body and seasoning of the soup.
Once the broth reaches a boil, add the gnocchi and shredded or cubed chicken. Bring back to a gentle boil and cook for 3-4 minutes until the gnocchi floats to the top and is tender. I prefer to use quality gnocchi like De Cecco because it holds its shape better and doesn't become mushy in the creamy broth.
Remove the pot from heat and stir in the softened cream cheese until completely melted and incorporated. Add the grated Parmesan and balsamic vinegar, stirring until smooth and creamy. Removing from heat before adding the cream cheese prevents it from breaking and ensures a silky, luxurious texture.
Stir in the fresh baby spinach and most of the basil chiffonade, reserving a small amount for garnish. The residual heat from the soup will gently wilt the spinach while keeping it vibrant green. Let the soup rest for 5-10 minutes before serving, allowing the flavors to meld and the texture to set.