Heat the olive oil and butter in a large soup pot over medium-high heat. Add the chopped onion and sauté for about 5 minutes until it starts to soften and become translucent, stirring occasionally to prevent browning.
Add the minced garlic to the pot with the sautéed onion and stir for about 30 seconds until fragrant. Next, add the butternut squash chunks, sliced carrot, diced russet potato, ground cinnamon, and ground nutmeg. Pour in the broth (vegetable or chicken). Increase the heat to high and bring everything to a boil. I like to use just enough broth to almost cover the veggies—don’t worry if they aren’t fully submerged.
Once the soup is boiling, cover the pot with the lid slightly ajar to allow some steam to escape. Reduce the heat so that it’s simmering gently—not boiling vigorously. Let it cook for about 20 minutes, or until the vegetables are soft and easily pierced with a knife. Stir the soup halfway through to ensure even cooking.
Turn off the heat and let the soup cool slightly for safer blending. Use an immersion blender to puree the soup directly in the pot until silky smooth. Alternatively, you can work in batches with a standard blender (be sure not to overfill and vent the lid).
Stir in the full can of coconut milk into the blended soup, then season generously with salt and black pepper—start with 1/2 teaspoon of salt and adjust to taste. If the soup seems too thick, add extra broth, 1/2 cup at a time, to reach your desired consistency. I love to be generous with both salt and pepper here, as it really brings out the flavors.