Bring a pot of salted water to a boil and cook the elbow macaroni according to package directions; drain and set aside.
In a large saucepan over medium heat, melt the butter. Add the minced sweet onion and sauté until softened, about 5 minutes.
Whisk in the flour and cook until the mixture turns lightly golden, about 1 to 2 minutes.
Slowly whisk in the whole milk, then the 2% milk. Increase heat to medium-high and bring the sauce to a gentle boil, whisking constantly until smooth and thickened, about 10 to 12 minutes.
Season the sauce with a pinch of kosher salt and freshly ground black pepper, tasting and adjusting as needed.
Add the sliced spinach to the sauce and stir until wilted, about 1 to 2 minutes.
Reduce heat to low and stir in the shredded cheddar, shredded smoked gouda, and crumbled goat cheese until fully melted and smooth.
Add the cooked elbow macaroni to the cheese sauce and stir until the pasta is evenly coated. Taste and adjust salt and pepper if desired, then serve immediately.