Create your roux: In your large cast iron pot over medium heat, melt butter. Whisk in flour and cook for 2-3 minutes, stirring constantly. This removes the raw flour taste and creates the base for your silky sauce.
Add liquids gradually: Slowly whisk in milk and half-and-half. Start with just a splash, whisking vigorously to prevent lumps, then gradually add the rest. This technique ensures a perfectly smooth sauce.
Simmer until thickened: Bring mixture to a gentle simmer, whisking frequently. Important: Do not let it boil! A rolling boil will create a grainy texture. Cook for 3-4 minutes at a gentle simmer until it coats the back of a spoon.
Season the base: Add salt, pepper, and paprika. Taste and adjust – this is your chance to build flavor before adding cheese.
Add cheese in batches: Remove from heat completely before adding cheese. Add cheese in three additions, whisking until completely melted between each addition. Start with 4 cups cheddar, saving the rest for later. Never add cheese while the sauce is still simmering!