Preheat oven to 220°C and line a baking sheet with parchment paper for easy cleanup. Place chicken breasts on the baking sheet, drizzle both sides with 1 tbsp olive oil and season with salt and freshly ground black pepper.
Trim about ½ cm off the heads of garlic, drizzle 1 tsp olive oil over the exposed surface of the garlic and season with salt and freshly ground black pepper, wrap each head in aluminum foil and place on baking sheet next to the chicken.
Roast chicken for 30-35 minutes (or until the internal temperature reaches 75°C) and the garlic heads for 45 minutes. Let them cool.
Once they are cooled, dice the chicken and set it aside. Press on the bottom of a garlic clove to push it out of its paper and make the cloves into a paste using your knife or fork. Set it aside.
Add 2 tbsp olive oil and unsalted butter in a large pot and place it over a medium-high heat. Stir in onion and cook for 5-7 minutes until soft and translucent. Add the roasted garlic paste and stir for 30 seconds.
Add diced carrots, parsnips, celery and butternut squash, season with Italian seasoning, salt and freshly ground black pepper. Add in tomato paste and cook for 3-4 minutes. Then add chicken or vegetable stock and Parmesan rind to the pot, cover and bring to a simmer. Reduce the heat to maintain a gentle simmer, stirring occasionally, to let the flavors combine and the veggies to cook through - about 20 minutes.
Cook gnocchi pasta in a separate pot according to the package instructions and set aside.
Add in diced chicken and heat for 5 minutes. Check for seasoning and add salt or freshly ground black pepper if needed.
Turn off the heat, remove Parmesan rind and add in baby spinach, stir to incorporate it and let it wilt for a couple of minutes. Finish the soup with chopped fresh basil, parsley and cooked gnocchi.
Garnish each bowl of soup with grated Parmesan, a pinch of cayenne and fresh parsley.