Bring a large pot of salted water to a boil.
Add the elbow macaroni and cook according to the package instructions until al dente.
Drain the macaroni and set aside.
In a large saucepan, melt the butter over medium heat.
Stir in the flour and cook for about 1-2 minutes, until the mixture is bubbly and has a slightly nutty aroma.
Gradually whisk in the milk, ensuring there are no lumps. Continue to cook, stirring constantly, until the mixture thickens, about 5-7 minutes.
Reduce the heat to low and stir in the shredded cheddar cheese and mozzarella cheese until melted and smooth.
Season with salt, black pepper, and paprika (if using).
Add the cooked macaroni to the cheese sauce, stirring gently to combine until all the pasta is coated with the sauce.
Preheat your oven to 350°F (175°C).
Transfer the macaroni and cheese to a greased baking dish.
Sprinkle the grated Parmesan cheese on top.
Bake for 20-25 minutes, or until the top is golden brown and bubbly.
Enjoy your meal!