# What You Need:
→ Vegetables
01 - 2.5 pounds russet potatoes, peeled and thinly sliced
02 - 1 medium yellow onion, finely chopped
→ Meats
03 - 12 ounces cooked ham, diced
→ Dairy
04 - 4 tablespoons unsalted butter
05 - 2 cups whole milk
06 - 1 cup heavy cream
07 - 1 ½ cups shredded sharp cheddar cheese
08 - ½ cup grated Parmesan cheese
→ Pantry
09 - ¼ cup all-purpose flour
10 - 1 teaspoon salt
11 - ½ teaspoon freshly ground black pepper
12 - ½ teaspoon garlic powder
13 - ½ teaspoon dried thyme
14 - Pinch of ground nutmeg
→ Optional Topping
15 - ½ cup panko breadcrumbs
16 - 2 tablespoons melted butter
# How To Make It:
01 - Preheat oven to 350°F. Grease a 9x13-inch baking dish.
02 - Melt butter in a large saucepan over medium heat. Add chopped onions and cook until translucent, approximately 3 to 4 minutes.
03 - Stir in flour and cook continuously for 1 minute to form a roux.
04 - Gradually whisk in whole milk and heavy cream. Continue whisking until the mixture is smooth and slightly thickened, about 4 to 5 minutes.
05 - Reduce heat to low. Stir in cheddar cheese, Parmesan cheese, salt, black pepper, garlic powder, dried thyme, and nutmeg. Mix until cheese melts and sauce becomes smooth. Remove from heat.
06 - Arrange half of the potato slices in the baking dish. Evenly distribute half of the diced ham over the potatoes. Pour half of the cheese sauce on top. Repeat the layering with remaining potatoes, ham, and cheese sauce.
07 - Combine panko breadcrumbs with melted butter and sprinkle evenly over the casserole if desired.
08 - Cover the baking dish with foil and bake for 45 minutes.
09 - Remove foil and continue baking for an additional 30 minutes until the top is golden and bubbling and potatoes are tender.
10 - Allow casserole to rest for 10 minutes before serving.