Bring a large saucepan of salted water to boil. Cook pasta until al dente, about 11 minutes. Drain and reserve pasta.
Step 1
Heat milk in a medium saucepan over medium heat until simmering, then put aside.
Step 2
Melt butter in a large heavy-bottomed stock pot over medium heat. After the butter melts, stir in the flour and cook, whisking continually, until light brown and toasted-smelling, about 3 minutes.
Step 3
Take the pot off the heat and carefully whisk the warm milk into the flour. Never stop whisking to avoid lumps. (The mixture will thicken and thin until smooth.)
Step 4
Return the pot to medium-high heat and whisk the mixture until it thickens enough to coat the back of a spoon, about 2 minutes. Salt and pepper the mixture and lower the heat to medium.
Step 5
Melt cheddar and Parmesan cheeses and smooth the cheese sauce. Stir in the spaghetti and heat until warmed through. Serve now.