Preheat the oven to 425 degrees F. Cut the butternut squash, onions and apples in 1-inch cubes.
Place them on a sheet pan and toss with the olive oil, a generous teaspoon of salt and 1/2 teaspoon pepper. Spread the squash mixture in a single layer in 1 or 2 sheet pans, whatever fits. Roast for 35 to 45 minutes, until vegetables are very tender and slightly browned.
Transfer the squash mixture into a large stockpot, add 2 cups of the vegetable stock, and turn the heat to medium until the stock is simmering.
Remove the pot from heat and transfer its contents into a food processor or blender, doing it in batches if you need to. Puree the soup until smooth, then transfer back into the stockpot and put on low heat.
Stir in the milk or cream, the ginger, nutmeg, and more salt and pepper to taste. Add more stock or milk if soup is too thick. Let simmer on low for 5 to 10 minutes, then ladle into bowls, top with a dollop of cream and sprinkle with a pinch of nutmeg.