Preheat oven to 350 degrees F (175 degrees C). Bring a large pot of lightly salted water to a boil. Cook elbow macaroni in boiling water, stirring occasionally until cooked through but firm to the bite, 8 minutes. Drain.
Melt 2 tablespoons butter in a saucepan over medium heat. Stir in flour to make a roux. Slowly add milk to roux, stirring constantly. Stir in Cheddar and Parmesan cheeses and cook over low heat until cheese is melted and sauce is thick, about 3 minutes. Place macaroni in large baking dish and pour sauce over macaroni. Stir well.
Melt 2 tablespoons butter in a skillet over medium heat. Add breadcrumbs and stir until butter is absorbed, 2 to 3 minutes. Spread over macaroni to cover. Sprinkle with paprika.
Bake in preheated oven until cheese sauce is hot and breadcrumbs are browned, about 30 minutes.