Quick Recipe Version (TL;DR)
Quick Ingredients
- 2 1/2 lb russet or Yukon gold potatoes, peeled and thinly sliced
- 2 cups diced cooked ham
- 1 medium yellow onion, finely chopped
- 2 cloves garlic, minced
- 6 tbsp unsalted butter, divided
- 1/4 cup all-purpose flour
- 2 1/2 cups whole milk + 1 cup heavy cream
- 2 3/4 cups sharp cheddar cheese, grated (divided)
- 1/2 cup Gruyère or Swiss cheese, grated (optional)
- 1/4 cup grated Parmesan cheese
- 1/4 cup panko or plain breadcrumbs
- 1 tsp Dijon mustard
- 1 1/2 tsp kosher salt, plus more to taste
- 1 tsp black pepper, divided
- 1/2 tsp smoked paprika; pinch ground nutmeg (optional)
- Fresh parsley or chives, for garnish (optional)
Do This
- 1. Preheat oven to 375°F (190°C). Grease a 9×13-inch baking dish with 1 tbsp butter.
- 2. Peel and thinly slice potatoes (about 1/8 inch). Dice ham. Set aside.
- 3. In a saucepan, melt 4 tbsp butter. Cook onion until soft, add garlic, then stir in flour and cook 1 to 2 minutes.
- 4. Whisk in milk and cream; simmer until thickened. Off heat, stir in 2 cups cheddar, Gruyère, Dijon, salt, pepper, paprika, and nutmeg.
- 5. Layer half the potatoes in the dish, season lightly, scatter over half the ham, then pour on half the sauce. Repeat with remaining potatoes, ham, and sauce. Cover tightly with foil.
- 6. Bake covered for 45 minutes. Meanwhile, mix 3/4 cup cheddar, Parmesan, breadcrumbs, and 1 tbsp melted butter.
- 7. Remove foil, sprinkle topping over casserole, and bake 20 to 25 minutes more, until golden and bubbly. Rest 10 minutes, garnish, and serve.
Why You’ll Love This Recipe
- Classic comfort food: tender layers of potatoes, smoky ham, and a rich cheddar cream baked until bubbly and golden.
- Great way to use leftover ham and pantry staples for a filling, family-friendly dinner.
- Make-ahead friendly, reheats beautifully, and is perfect for potlucks or cozy weekends.
- Easy, straightforward techniques that any home cook can master.
Grocery List
- Produce: Russet or Yukon gold potatoes, yellow onion, garlic, fresh parsley or chives (optional)
- Dairy: Unsalted butter, whole milk, heavy cream, sharp cheddar cheese, Gruyère or Swiss cheese (optional), Parmesan cheese
- Pantry: Cooked ham, all-purpose flour, Dijon mustard, smoked paprika, ground nutmeg, panko or plain breadcrumbs, kosher salt, black pepper
Full Ingredients
For the potato and ham layers
- 2 1/2 lb (about 1.1 kg) russet or Yukon gold potatoes, peeled and thinly sliced 1/8 inch (3 mm)
- 2 cups (about 10 oz / 280 g) cooked ham, diced into 1/2-inch (1.25 cm) cubes
- 1/2 tsp kosher salt, divided, for seasoning layers
- 1/2 tsp freshly ground black pepper, divided, for seasoning layers
- 1 tbsp unsalted butter, for greasing the baking dish
For the cheddar cream sauce
- 4 tbsp (1/4 cup / 56 g) unsalted butter
- 1 medium yellow onion, finely chopped
- 2 cloves garlic, minced
- 1/4 cup (30 g) all-purpose flour
- 2 1/2 cups (590 ml) whole milk, preferably at room temperature
- 1 cup (240 ml) heavy cream
- 2 cups (8 oz / 225 g) sharp cheddar cheese, freshly grated
- 1/2 cup (2 oz / 55 g) grated Gruyère or Swiss cheese (optional but recommended for extra depth)
- 1 tsp Dijon mustard
- 1 tsp kosher salt, plus more to taste
- 1/2 tsp freshly ground black pepper
- 1/2 tsp smoked paprika
- 1/4 tsp ground nutmeg (optional, but classic with creamy sauces)
For the cheesy topping
- 3/4 cup (3 oz / 85 g) shredded sharp cheddar cheese
- 1/4 cup (1 oz / 28 g) grated Parmesan cheese
- 1/4 cup (15 g) panko breadcrumbs or plain dried breadcrumbs
- 1 tbsp unsalted butter, melted
- 1 tbsp fresh parsley or chives, finely chopped, for garnish (optional)

Step-by-Step Instructions
Step 1: Preheat the oven and prepare the baking dish
Preheat your oven to 375°F (190°C) with a rack in the center position. Lightly grease a 9×13-inch (23×33 cm) baking dish with the 1 tablespoon of butter, making sure to coat the bottom and sides. This helps prevent sticking and makes it easier to serve neat squares later.
Step 2: Slice the potatoes and prep the ham
Peel the potatoes and slice them into thin rounds about 1/8 inch (3 mm) thick. For even cooking, try to keep the slices as uniform as possible; a mandoline works very well if you have one, but a sharp knife is fine too.
If you slice the potatoes ahead of time, place them in a large bowl of cold water to prevent browning. When you are ready to assemble the dish, drain them and pat dry with a clean kitchen towel or paper towels; excess water can make the sauce thinner.
Dice the cooked ham into bite-size cubes (about 1/2 inch / 1.25 cm). Set the potatoes and ham aside.
Step 3: Sauté the aromatics and make the roux
In a medium saucepan, melt the 4 tablespoons of butter over medium heat. Add the chopped onion and cook, stirring occasionally, until softened and translucent, 5 to 7 minutes. The onion should be tender but not browned, which keeps the sauce sweet and mellow.
Add the minced garlic and cook for another 30 seconds until fragrant. Sprinkle the flour evenly over the onions and garlic. Stir constantly for 1 to 2 minutes to form a paste (roux) and cook off the raw flour taste. The mixture will be thick and may look a bit dry; that is normal.
Step 4: Build the cheddar cream sauce
While whisking, slowly pour in the milk and cream, a little at a time, to avoid lumps. Continue whisking until the mixture is smooth. Bring it to a gentle simmer and cook, stirring frequently, until it thickens enough to coat the back of a spoon, about 5 to 7 minutes.
Reduce the heat to low. Stir in the Dijon mustard, smoked paprika, nutmeg (if using), 1 teaspoon kosher salt, and 1/2 teaspoon black pepper. Add the 2 cups cheddar and the Gruyère or Swiss, a handful at a time, stirring until completely melted and smooth before adding more.
Taste the sauce and adjust the seasoning, keeping in mind that the ham and cheeses are salty. If needed, add a pinch more salt or pepper. Turn off the heat and let the sauce sit while you assemble the layers; it will thicken slightly as it stands.
Step 5: Assemble the potato and ham layers and mix the topping
Pat the potato slices dry if they were in water. Arrange half of the potatoes in an even layer on the bottom of the prepared baking dish, overlapping slightly like shingles. Lightly season this layer with about 1/4 teaspoon of the kosher salt and 1/4 teaspoon of the black pepper.
Scatter half of the diced ham evenly over the potatoes. Pour about half of the warm cheddar cream sauce over the top, using a spatula to gently nudge it into the corners and between the slices.
Repeat with the remaining potatoes (again overlapping slightly), the rest of the ham, and the remaining sauce. Gently tap the dish on the counter to help the sauce settle down between layers.
In a small bowl, combine the 3/4 cup shredded cheddar, Parmesan, and panko breadcrumbs. Drizzle with the 1 tablespoon melted butter and toss until the crumbs are evenly moistened. Set this topping aside; you will add it partway through baking.
Cover the baking dish tightly with aluminum foil. To help prevent sticking, lightly spray the underside of the foil with nonstick spray or rub with a bit of butter before covering.
Step 6: Bake until tender, then add the cheesy topping
Place the covered dish in the preheated oven and bake for 45 minutes. During this time, the potatoes will begin to soften and absorb the sauce.
After 45 minutes, carefully remove the foil (watch out for steam). Sprinkle the cheese and breadcrumb topping evenly over the surface of the casserole.
Return the uncovered dish to the oven and bake for another 20 to 25 minutes, until the top is deeply golden brown, the sauce is bubbling around the edges, and a knife slides easily through the potatoes in the center. If the top is browning too quickly before the potatoes are fully tender, loosely tent with foil.
Step 7: Rest, garnish, and serve
Remove the baking dish from the oven and let the casserole rest for at least 10 minutes before serving. This rest time helps the layers set up slightly so you can cut neat portions and ensures you do not burn your mouth on the molten cheese.
Sprinkle with chopped parsley or chives, if using, for a fresh pop of color. Serve warm, scooping generous squares that show off the layers of potato, ham, and creamy cheddar sauce. This dish pairs beautifully with a simple green salad or steamed vegetables.
Pro Tips
- Slice evenly: Thin, uniform slices (about 1/8 inch / 3 mm) ensure the potatoes cook through at the same rate. A mandoline makes this fast and easy.
- Use block cheese: Grate your own cheddar (and Gruyère) from a block. Pre-shredded cheese often contains anti-caking agents that can make the sauce grainy instead of silky.
- Do not skip the rest: Letting the bake sit for 10 to 15 minutes after it comes out of the oven helps the sauce thicken slightly and the layers hold together when serving.
- Adjust salt carefully: Ham and cheese are salty, so always taste the sauce before adding extra salt. You can add more at the table, but you cannot take it out.
- Boost the crust: For an extra-crispy top, switch the oven to broil for the final 2 to 3 minutes. Watch closely so the cheese and breadcrumbs do not burn.
Variations
- Veggie-packed: Add 1 to 1 1/2 cups of lightly steamed broccoli florets, peas, or sautéed mushrooms between the potato and ham layers for extra vegetables and color.
- Extra smoky: Use smoked cheddar or add a bit more smoked paprika. You can also include a few strips of crispy crumbled bacon along with the ham.
- Lighter version: Swap the heavy cream for half-and-half and reduce the cheese in the sauce to 1 1/2 cups. The dish will be slightly less rich but still comforting and flavorful.
Storage & Make-Ahead
To store leftovers, let the casserole cool to room temperature, then cover tightly and refrigerate for up to 3 to 4 days. Reheat individual portions in the microwave or warm the whole dish, covered with foil, in a 350°F (175°C) oven for 20 to 25 minutes, until heated through.
For make-ahead, you can assemble the unbaked casserole (without the breadcrumb and cheese topping), cover tightly, and refrigerate for up to 24 hours. When ready to bake, let it sit at room temperature for 20 to 30 minutes while the oven preheats, then bake as directed, adding a few extra minutes if needed. Add the topping during the last 20 to 25 minutes of baking as described above.
You can also freeze the fully baked and cooled casserole, tightly wrapped, for up to 2 months. Thaw overnight in the refrigerator, then reheat covered at 350°F (175°C) until hot and bubbly.
Nutrition (per serving)
Approximate values for 1 of 6 servings: about 650 calories; 35 g fat (20 g saturated fat); 55 g carbohydrates; 4 g fiber; 9 g sugar; 29 g protein; 1,250 mg sodium. Exact values will vary based on the specific brands of ham, cheese, and dairy you use.

Leave a Reply