Prep the squash: Preheat your oven to 400°F (200°C).
Halve the spaghetti squash lengthwise and scoop out the seeds. Drizzle cut sides with 1 tablespoon olive oil, season with salt and pepper, and place cut-side down on a lined baking sheet. Roast for 35–45 minutes, until the strands pull away easily with a fork and are just tender, not mushy.
Start the mushrooms: While the squash roasts, heat 1 tablespoon olive oil and the butter in a large skillet over medium-high heat.
Add the sliced mushrooms in an even layer. Let them sear undisturbed for 2–3 minutes, then stir and cook until browned and their liquid has evaporated, about 6–8 minutes total. Season with a pinch of salt and pepper.
Add aromatics: Lower heat to medium.
Stir in the garlic, thyme (or Italian seasoning), and red pepper flakes. Cook 30–60 seconds until fragrant. Don’t let the garlic brown.
Build the sauce: Pour in the heavy cream (and broth, if using).
Bring to a gentle simmer. Stir in Parmesan and cream cheese (if using) until melted and smooth. Taste and adjust salt and pepper.
The sauce should be creamy and lightly thickened.
Wilt the spinach: Add chopped spinach to the skillet. Stir until just wilted and bright green, 1–2 minutes. Turn off the heat to prevent overcooking.
Shred the squash: When the squash is done, let it cool slightly.
Use a fork to pull the strands into “spaghetti.” Pat with paper towels if very moist; this keeps the sauce from thinning.
Combine: Add the squash strands to the skillet and toss gently to coat in the creamy mushroom-spinach sauce. Warm over low heat for 1–2 minutes if needed. Finish with a handful of Parmesan and a grind of black pepper.
Serve: Spoon into bowls, garnish with parsley, and add extra Parmesan if you like.
Serve hot.