Preheat your oven to 400°F (200°C) and line a baking sheet with parchment paper for easy cleanup.
Toss the butternut squash cubes with olive oil, ½ teaspoon salt, and ¼ teaspoon black pepper until evenly coated. Spread in a single layer on the prepared baking sheet.
Roast the squash for 25-30 minutes, stirring halfway through, until fork-tender and slightly caramelized at the edges.
While the squash roasts, bring a large pot of salted water to a boil and cook the pasta according to package directions until al dente. Drain and set aside.
Transfer the roasted squash to a blender or food processor and add the broth. Purée until completely smooth, adding more broth if needed to achieve a velvety texture.
In the same pot used for pasta, melt butter over medium heat. Add flour and whisk constantly for 1-2 minutes to create a roux (it should smell slightly nutty but not brown).
Slowly pour in the milk while whisking continuously to prevent lumps. Cook for 3-4 minutes until the mixture thickens enough to coat the back of a spoon.
Stir in the butternut squash purée, remaining salt and pepper, nutmeg, and cayenne (if using) until well combined.
Reduce heat to low and add the grated cheddar cheese in handfuls, stirring until completely melted before adding more. Then stir in ¼ cup of the Parmesan.
Fold the cooked pasta into the cheese sauce until every piece is well coated. Taste and adjust seasonings if needed.
For a baked version, transfer to a buttered 9×13 baking dish, top with remaining Parmesan and panko breadcrumbs, and bake at 350°F for 15-20 minutes until bubbly and golden on top.