Preheat your oven to 375°F (190°C). Grease a 9x13-inch baking dish to prevent sticking.
Melt butter in a saucepan over medium heat. Whisk in flour and cook for 1-2 minutes. Gradually add milk, whisking constantly, until the sauce thickens (5-7 minutes).
Remove from heat and stir in 1½ cups cheddar and ½ cup Parmesan cheese until smooth. Season with garlic powder, onion powder, smoked paprika (if using), salt, and pepper to taste.
Layer potato slices in the prepared dish, overlapping slightly. Pour a thin layer of cheese sauce over the potatoes. Repeat layers, finishing with sauce on top. Gently press down to help the sauce seep into the potatoes.
Sprinkle the remaining ½ cup cheddar and ½ cup Parmesan cheese on top for a golden, cheesy crust.
Cover with foil and bake for 45 minutes. Remove foil and bake for an additional 15-20 minutes until potatoes are tender and the top is golden. If needed, loosely cover with foil during the last few minutes.
Let the dish cool for 5-10 minutes before serving. Garnish with fresh parsley, green onions, or bacon bits for extra flavor.