Heat oven to 400F. Place squash and onions onto a baking sheet. Drizzle with oil and season with salt and pepper. Roast in preheated oven for 30-35 minutes, turning after 15-20 minutes. Onions may be done in 20 minutes, if so, transfer them to a bowl and return squash to oven until lightly browned.
For pasta, bring 4 quarts of water to a boil in large stockpot. Steam the spinach in a steamer basket, over the boiling water for about 2 minutes, until wilted. (Alternately, you can steam the spinach with 1/2 cup of water in the skillet you use for the sauce)
While the pasta boils, start the sauce.
Heat a small dutch oven or a large skillet over medium high heat. Add 2 teaspoons of olive oil and garlic to the hot pan and sauté garlic for 1 minute. Heat the oil, add garlic, reduce heat and blend in milk, cream cheese, and parmesan until slightly thickened (add 1/4 to 1/2 cup pasta water to thin).
Add about 1/2 cup of the roasted squash to the pan, and mash into sauce. Stir until well blended. Season with salt and pepper.
Add the cooked pasta, spinach, and onions to the sauce pan, stirring to coat. Add the squash and gently fold. Garnish with the walnuts and Parmesan.