Cook 8 oz elbow macaroni in salted boiling water until al dente; drain
Melt 4 tbsp butter in a saucepan over medium heat
Whisk in 4 tbsp all-purpose flour until smooth; cook 1 minute
Slowly whisk in 2 1/2 to 3 cups milk until thickened
Reduce heat to low
Add 1/2 tsp salt, 1/4 tsp black pepper, and 1/4 tsp garlic powder (optional)
Stir in 2 cups shredded sharp cheddar cheese (or a mix of cheddar and mozzarella) until melted
If using, stir in 1/2 cup shredded Parmesan
Fold in the cooked pasta
Optional: transfer to a baking dish; top with extra cheese
Optional: bake at 375°F (190°C) for 15–20 minutes until bubbly and lightly browned
Serve hot
