Bring a large pot of salted water to a boil and cook the bucatini until al dente. Reserve ½ cup of pasta water, then drain.
Heat olive oil or butter in a large pan over medium heat.
Add the onion and sauté until soft and slightly golden, about 5–7 minutes.
Add garlic and cook for about 30 seconds, until fragrant.
Stir in the spinach and let it wilt down completely.
Lower the heat and pour in the cream, stirring gently. Let it simmer for 2–3 minutes until slightly thickened.
Add the drained pasta to the sauce, tossing to coat. Use reserved pasta water a little at a time to loosen the sauce if needed.
Remove from heat and stir in parmesan cheese until melted and creamy.
Season with salt, black pepper, and optional red pepper flakes or a pinch of nutmeg.
Serve warm with extra parmesan on top.