Heat the olive oil in a large pot over medium heat.
Add the chopped onion and sauté until softened, about 5 minutes.
Add the garlic and sauté for an additional minute, until fragrant.
Add the cubed butternut squash, vegetable broth, ground ginger, cinnamon, nutmeg, salt, and pepper to the pot.
Bring the mixture to a boil, then reduce the heat and let it simmer for about 20 minutes, or until the squash is tender.
Use an immersion blender to purée the soup directly in the pot until smooth. Alternatively, transfer the soup in batches to a blender and blend until smooth.
If desired, stir in the coconut milk for added creaminess and adjust seasoning with more salt and pepper to taste.
Serve hot, garnished with fresh parsley or cilantro if using.