Heat a stock pot or Dutch oven over medium heat and add the olive oil and butter.
Once the butter is melted, add the butternut squash and season with salt and pepper.
Cook, stirring occasionally, until the butternut squash starts to soften and caramelize, about 10-15 minutes.
Add the garlic and shallot and toss to combine
Cook for about 5 more minutes, then add the cinnamon, ginger, and allspice and stir to coat all of the squash.
Pour in the vegetable stock and raise the heat to medium-high. Bring to a boil, then reduce heat to simmer until the squash is super tender, about 10-15 minutes.
Transfer the soup to a blender (or use an immersion blender) and process until smooth. Return to the pan.
Add the heavy cream to the blender and turn it on to “clean” the canister of any excess soup, then pour into the pot. Stir and heat through.
Taste and season with additional salt and pepper, if needed.
Serve as is, or garnish with a drizzle of cream, chopped apples, or crunchy pepitas.