Preheat your oven to 350°F.
Cook the elbow macaroni according to package instructions until al dente, then drain and set aside.
In a large saucepan, melt the butter over medium heat.
Stir in the flour and cook for about 1 minute, whisking constantly until smooth.
Gradually add the milk, continuing to whisk until the mixture thickens, about 5-7 minutes.
Stir in the salt, black pepper, paprika, and cayenne pepper, if using.
Remove from heat and add the cheddar and mozzarella cheeses, stirring until melted and smooth.
In a large bowl, combine the cooked macaroni with the cheese sauce, mixing well to coat.
Transfer the mixture to a greased 9x13-inch baking dish.
Sprinkle the grated Parmesan cheese and breadcrumbs evenly over the top.
Bake in the preheated oven for 25-30 minutes, or until the top is golden brown and bubbly.
Let it cool for a few minutes before serving.