Preheat the oven to 400° Fahrenheit. Line a large baking sheet with parchment paper and set aside.
Either in a large bowl or directly on the baking sheet, combine the butternut squash, yellow onion, garlic cloves, avocado oil, salt, and pepper. Toss to coat evenly. Spread out on the baking sheet in a single layer.
Roast the squash for 30-40 minutes, tossing midway through cooking, until tender when pierced with a fork.
While the squash is cooking, prepare the breadcrumb topping. Heat the butter in a skillet over medium heat. Once hot, stir in the breadcrumbs and pine nuts to evenly coat in butter. Toast the breadcrumb mixture, stirring frequently, for about 5-7 minutes until the mixture takes on a golden color and begins to smell toasted and nutty. Keep an eye on it as it can go from golden brown to burned fairly quickly. Remove from heat and stir in the herbs and garlic powder. Set aside until ready to use.
Once the squash is tender, remove from the oven and set aside to cool slightly.
Cook the pasta according to the package instructions. Reserve ¼ cup of pasta water before draining.
While the pasta is cooking, add the roasted butternut squash mixture to a blender, making sure to remove and discard the skin from the garlic cloves. Add the milk, stock, thyme, and nutmeg or allspice, if using. Blend on high until completely smooth and creamy, scraping down the sides, if needed.
Drain the pasta and return it to the pot. Pour the butternut squash sauce over the pasta and toss to combine, adding a bit of pasta water if needed to loosen up the sauce.
Serve topped with a generous sprinkle of the toasted breadcrumbs.
If you want to store leftovers, it’s best to store the sauce separately from the cooked pasta. In this case, only mix as much pasta and sauce as you’ll need for one meal, then store the leftover sauce in an airtight container in the fridge for up to 3 days or in the freezer for up to three months.
Reheat the sauce gently on the stovetop when ready to use and toss with freshly cooked pasta.