In a large saucepan, melt butter over medium heat.
Add onion and sauté until softened, about 5 minutes.
Whisk in flour until mixture is golden.
Add whole milk, whisking constantly.
Add 2% milk; raise heat to medium-high, bring to a boil and continue to whisk until sauce is smooth and thickened, 10 to 12 minutes.
Add a sprinkle of salt and pepper.
Add spinach to sauce; give it a few stirs until spinach is wilted.
Stir in cheeses until melted and well combined.
Add cooked pasta and stir.
Taste and add more salt and/or pepper, if desired.
Serve immediately.
