Begin by preparing the butternut squash. Cut it in half lengthwise, scoop out the seeds, peel it, and dice it into 1-inch cubes. Set aside.
In a large pot or Dutch oven, heat the olive oil over medium heat. Add the diced onion and sauté for about 5 minutes, or until it becomes translucent.
Stir in the minced garlic and cook for an additional minute, until fragrant.
Add the cubed butternut squash, diced apple, vegetable broth, cinnamon, nutmeg, and ginger to the pot. Stir to combine all ingredients.
Bring the mixture to a boil, then reduce the heat and let it simmer for about 25 minutes, or until the squash is tender.
Once the squash is soft, remove the pot from the heat. If using a blender, carefully transfer the soup to the blender in batches, or use an immersion blender directly in the pot. Blend until the soup is smooth and creamy.
Return the blended soup to the pot (if using a traditional blender) and stir in the coconut milk or heavy cream. Heat gently over low flame until warmed through. Season with salt and pepper to taste.
Serve hot, garnished with a sprinkle of cinnamon or croutons if desired. Enjoy!