Heat olive oil in a large stock pot over medium heat. Add the diced onion and cook until it turns soft and translucent, about five minutes. Stir in the garlic and cook for one more minute so it doesn't burn.
Add the cubed butternut squash and chopped apples to the pot. Cook for four to five minutes, stirring occasionally so nothing sticks. The apple starts to soften and releases a little of its natural juice.
Pour in the chicken stock and bring the pot to a boil. Lower the heat and let everything simmer for fifteen to twenty minutes. The squash is ready once a fork slides through it with no resistance.
Transfer the mixture to a blender in batches, holding the lid down with a towel to avoid burns. Blend until completely smooth, then pour the puree back into the pot. An immersion blender works too and saves you a step.
Stir the cinnamon, nutmeg, ginger, salt, and pepper into the pureed soup. Simmer for five more minutes so the spices bloom. Slowly stir in the half and half until the soup turns a shade lighter.
Ladle the soup into bowls right away while it's steaming. Top with a swirl of cream, a few diced apple pieces, or a pinch of fresh nutmeg. Serve alongside crusty bread for a full meal.