Prepare the cheeses. Shred the sharp cheddar from a block and cut the Velveeta into small cubes.
Make the roux. Melt the butter in a large saucepan over medium heat. Add the flour and stir for approximately 30 seconds, until the butter and flour are combined and the flour begins to cook.
Add the milk. Slowly pour in the whole milk, stirring continuously until the mixture is smooth.
Melt the cheeses. Add the shredded cheddar and cubed Velveeta. Keep the heat gentle, with only an occasional bubble, and stir until both cheeses have melted into a smooth sauce. Do not allow the sauce to boil.
Keep the sauce warm. Reduce the heat to low and stir occasionally while preparing the macaroni.
Cook the pasta. Bring a separate pot of salted water to a boil. Cook the shells or elbow macaroni according to the package instructions.
Combine. Drain the pasta without rinsing it, then immediately transfer it into the warm cheese sauce. Stir until all the macaroni is evenly coated.
Season and serve. Carefully taste the mac and cheese and adjust the salt and black pepper as needed. Serve while hot and creamy.