01 - Preheat oven to 375°F and grease a 9x13-inch baking dish.
02 - Place potato cubes in a large pot, cover with cold water, and season lightly with salt. Bring to a boil, then simmer for 8–10 minutes until tender but intact. Drain well and set aside.
03 - In a large saucepan over medium heat, melt 1/4 cup butter. Add chopped onion and sauté until translucent, about 5 minutes. Add minced garlic and cook for 1 more minute.
04 - Sprinkle flour evenly over onion mixture, stirring constantly for 1–2 minutes until a roux forms. Gradually whisk in 2 cups milk, ensuring the sauce stays smooth. Cook, stirring frequently, until thickened, 3–4 minutes.
05 - Remove saucepan from heat. Stir in sour cream, Dijon mustard, salt, pepper, and paprika.
06 - Add grated cheddar and mozzarella cheeses to the sauce, stirring until fully melted and mixture is smooth.
07 - Gently fold drained potatoes into cheese sauce, ensuring all cubes are evenly coated.
08 - Spoon the mixture into the prepared baking dish, spreading evenly.
09 - In a small bowl, mix panko breadcrumbs with melted butter and Parmesan cheese. Sprinkle evenly over surface.
10 - Bake uncovered for 35–40 minutes until bubbling and golden brown.
11 - Let cool for 10 minutes before topping with fresh chives or parsley, if desired. Serve warm.