Cook the elbow macaroni according to the package instructions until al dente. Drain and set aside.
In a large saucepan over medium heat, melt the butter. Once melted, add the flour and whisk continuously for 1-2 minutes to make a roux, ensuring there are no lumps.
Gradually pour in the milk while continuing to whisk the roux. Cook and whisk until the mixture thickens, which should take about 5-7 minutes.
Reduce the heat to low, then add 1 1/2 cups of shredded cheddar cheese and all of the grated Parmesan cheese to the sauce. Stir until the cheese is fully melted and the sauce is smooth and creamy.
Season the cheese sauce with salt, black pepper, paprika, and garlic powder (if using). Taste and adjust the seasonings as needed.
Add the cooked and drained elbow macaroni to the cheese sauce. Stir to coat the pasta evenly with the cheesy goodness.
If you desire a breadcrumb topping for added texture, melt a tablespoon of butter in a small skillet, add the breadcrumbs, and toast them until golden brown.
To serve, transfer the cheesy macaroni and cheese to a serving dish. Sprinkle the remaining 1/2 cup of shredded cheddar cheese over the top, and optionally, sprinkle the toasted breadcrumbs for extra crunch.
Serve your Cheesy Macaroni and Cheese hot and enjoy!