Fill a large pasta pot ⅔ full with hot water. Place your pot over high heat on your stove. Add a couple teaspoons of salt and cover the pot to let the water come to a boil.
While your pot is heating, shred the cheddar and grate your Parmesan, if needed, by placing a few chunks at at time in your blender. Set your cheese aside.
When your pot is boiling, add your pasta and give the pot a stir occasionally to prevent sticking. Cook your pasta until al dente (check it three minutes before the time listed on the package.)
When your pasta is cooked, drain it in a colander in the sink and leave it there while you make your cheese sauce.
In the same pot you used for the pasta, melt your butter over medium-high heat on your stove. Add in your flour and whisk to combine. Continue cooking and stirring the roux for about 90 seconds.
Add your milk to the roux, whisking constantly. Continue whisking until the milk thickens and becomes glossy. This should take 3-4 minutes.
Lower the heat and add in your cheeses gradually, stirring after each addition until combined.
Add your salt, pepper and garlic powder, stirring to combine. Cut up your basil leaves with kitchen scissors and add them to the cheese sauce.Turn off the heat.
Return your cooked pasta to your pot with the cheese sauce. Stir to combine.
Serve immediately for best results. Top with paprika, if desired. Store leftovers in the refrigerator for up to five days. Reheat leftovers in the microwave with a little milk added, so it's not dry.
Sharp cheddar works well, as opposed to extra sharp, which is too strong for this dish. The sauce makes just enough to coat the pasta. If you like your mac and cheese extra cheesy, make 1.5 times the sauce. The cheese sauce is great on veggies and ham.