Preheat your oven to 400°F (200°C). Cut the butternut squash in half lengthwise and scoop out the seeds. Drizzle the cut sides with olive oil, salt, and pepper. Place cut-side down on a baking sheet.
Roast the squash for 35 to 45 minutes, or until it is very tender when pierced with a fork. Let it cool slightly, then scoop the flesh out of the skin into a bowl. You should have about 2 cups of cooked squash.
While the squash roasts, cook the pasta according to package directions until al dente. Reserve about 1 cup of the starchy pasta water before draining.
In a large skillet over medium heat, add 2 tablespoons of olive oil. Sauté the onion until soft, about 5 minutes. Add the garlic and cook for 1 minute more until fragrant.
Add the roasted squash flesh, vegetable broth, heavy cream (or coconut milk), nutmeg, salt, and pepper to the skillet. Stir well.
Use an immersion blender or carefully transfer the mixture to a regular blender. Blend until the sauce is completely smooth and creamy. If the sauce is too thick, add a splash of the reserved pasta water until you reach your desired consistency.
Return the sauce to the skillet over low heat. Add the drained pasta and toss to coat everything evenly. If using, stir in the fresh sage.
Serve immediately, topped with grated Parmesan cheese if desired.
Notes
For an even deeper flavor, roast the squash halves cut-side up with a drizzle of maple syrup before roasting.
If you want a richer sauce without dairy, use full-fat canned coconut milk instead of heavy cream.
You can substitute the vegetable broth with chicken broth if you are not making a vegetarian dish.