Preheat oven to 400 degrees.
Toss cubed squash with olive oil and a few pinches of salt and place onto a sheet pan. Using aluminum foil, create a small pouch for sliced onions and garlic. Drizzle with olive oil, season with salt and pepper, and close the top of the pouch.
Place butternut squash and pouch on a sheet pan and roast for 40 mins, tossing squash once, until vegetables are golden and caramelized. Let cool for 10-15 minutes, and transfer squash and roasted garlic and onions into a blender or food processor along with milk. Puree until smooth and creamy. Consistency should be thick but pourable, slightly thinner than mashed potatoes. Taste and add additional salt and pepper as needed.
Heat 1-2 tablespoon oil in a large skillet over medium. Cook sausage until golden. Carefully drain fat and add cheeses (all of ricotta and ½ cup shredded cheese) to skillet with sausage and stir slowly until cheese melts and becomes creamy. Finally, add spinach to skillet and cook for 1-2 minutes, or until spinach is wilted down.
Cook shells until just al dente (careful not to over cook!). Drain and run under cold water to stop cooking. Pour half of butternut squash puree into the bottom of a oven safe baking dish. Generously stuff shells with cheese mixture and place shells face up on top of puree. Pour remaining puree over the top of the shells and garnish with additional ¼ cup shredded cheese. Cover with foil and bake for 35-40 mins. Remove foil and bake for a final 10-15 mins or until cheese is golden and bubbly.