Cook the elbow macaroni according to package instructions until al dente. Drain and set aside.
In a large saucepan over medium heat, melt the butter. Once melted, whisk in the flour and cook for about 1 minute, stirring constantly.
Gradually add the whole milk to the saucepan, whisking continuously to prevent lumps. Cook for 5-7 minutes until the mixture thickens slightly.
Reduce the heat to low and stir in the sharp cheddar cheese and mozzarella cheese until melted and smooth.
Add the garlic powder, onion powder, paprika, salt, and pepper to the cheese sauce. Stir until well combined.
Fold the cooked macaroni into the cheese sauce until evenly coated.
If desired, preheat your oven to 350°F. Transfer the mac and cheese to a greased baking dish.
In a small bowl, mix the breadcrumbs and grated Parmesan cheese. Sprinkle this mixture evenly over the mac and cheese.
Bake in the preheated oven for 20-25 minutes or until the top is golden and bubbly.
Let it cool for a few minutes before serving.