Heat the olive oil in a heavy bottom stock pot over medium heat. Add the onion to the pot and cook until softened. Stir in the garlic and cook for 1 minute.
Add the squash and the apple to the pot. Cook for 4-5 minutes, stirring occasionally.
Stir the stock into the squash mixture and bring to a boil. Turn the heat to low and simmer for 15-20 minutes or until the butternut squash is fork tender.
Transfer the mixture to a blender and cover with a lid. (Hold the lid with a towel to prevent burns.) Puree the mixture until smooth. Pour the puree back into the pot and return to a simmer.
Stir the cinnamon, nutmeg, ginger, salt and pepper into the puree. Simmer for an additional 5 minutes.
Add the half and half to the soup. Stir to combine.
Serve immediately with fresh grated nutmeg, diced apples and sour cream, if desired.
Notes
Soup can be made up to 48 hours in advance and refrigerated in an airtight container.