Prep the squash: Peel, seed, and cube the butternut squash into 1-inch pieces. If you want to save time, use pre-cut squash.
Roast for deeper flavor (recommended): Toss squash with 1 tablespoon olive oil, a pinch of salt and pepper.
Roast at 425°F (220°C) for 20–25 minutes until tender and lightly caramelized. This step adds incredible flavor, but you can skip it and simmer instead.
Sauté the aromatics: In a large pot, heat remaining olive oil and butter over medium heat. Add onion and a pinch of salt.
Cook 6–8 minutes, stirring, until translucent and lightly golden. Add garlic and cook 30 seconds until fragrant.
Add veggies and spices: Stir in cauliflower, thyme, pepper, and ginger. If you didn’t roast the squash, add raw squash now.
Cook 2–3 minutes to bloom the spices.
Simmer: Pour in 3 cups of broth. If using roasted squash, add it now. Bring to a gentle boil, then reduce to a simmer.
Cook 12–15 minutes, until everything is tender.
Blend until silky: Use an immersion blender to puree right in the pot until smooth. For a super-silky finish, transfer to a blender in batches. Add more broth as needed to reach your ideal thickness.
Finish with cream: Return soup to low heat, stir in heavy cream (or coconut milk).
Warm gently. Do not boil after adding dairy.
Brighten and balance: Stir in a small squeeze of lemon juice or a splash of apple cider vinegar. Taste and adjust salt and pepper.
If you like a hint of warmth, finish with a pinch of nutmeg or cinnamon.
Serve and top: Ladle into bowls and finish with your favorite keto-friendly toppings—crispy bacon, pumpkin seeds, chives, a drizzle of olive oil, or a dollop of sour cream.