Here is my favorite scalloped potatoes and ham recipe, with a creamy homemade sauce, layers of tender potato slices, savory ham, and plenty of melted cheddar cheese on top.
This dish is perfect for using up leftover ham from the holidays, and it’s hearty enough to serve as a complete meal. My family loves when I make this on busy weeknights because it’s comforting and filling without being too fussy.
Why You’ll Love This Scalloped Potatoes and Ham
- Complete one-dish meal – With potatoes, ham, and a creamy cheese sauce all baked together, you’ve got your protein, carbs, and comfort all in one pan.
- Perfect for using leftovers – This is a great way to use up leftover ham from holidays or Sunday dinner, turning it into something completely different and delicious.
- Creamy, cheesy comfort food – The homemade sauce with cheddar cheese coating tender potato slices is pure comfort in every bite.
- Great for feeding a crowd – This casserole easily serves 6-8 people, making it ideal for family gatherings or potlucks.
- Make-ahead friendly – You can assemble this dish earlier in the day and just pop it in the oven when you’re ready to eat.
What Kind of Potatoes Should I Use?
For scalloped potatoes, you’ll want to reach for starchy or all-purpose potatoes like Russets or Yukon Golds. Russets are great because they absorb the creamy sauce really well and get nice and tender, while Yukon Golds hold their shape a bit better and add a buttery flavor. Avoid waxy potatoes like red potatoes or fingerlings for this recipe, as they don’t absorb the sauce as well and can turn out a bit too firm. When you’re prepping your potatoes, try to slice them evenly (about 1/8 inch thick) so they cook at the same rate – a mandoline slicer makes this super easy if you have one.
Options for Substitutions
This recipe is pretty forgiving when it comes to swaps, so here are some options if you need them:
- Butter: You can use olive oil or vegetable oil instead of butter for the roux, though butter does add a nice richness to the sauce.
- Milk: Whole milk works best, but you can use 2% milk if that’s what you have. For a richer dish, swap half the milk for heavy cream. Avoid skim milk as it might make the sauce too thin.
- Chicken broth: Vegetable broth works just as well here, or you can use all milk instead and skip the broth entirely.
- Potatoes: Russet potatoes are traditional, but Yukon golds give you a creamier texture. Either way, slice them evenly (about 1/8 inch thick) so they cook at the same rate.
- Ham: Leftover turkey, cooked chicken, or even crumbled bacon work great here. You can also leave the meat out completely for a vegetarian version.
- Cheddar cheese: Gruyere, Swiss, or Monterey Jack are all good alternatives. You can also mix cheeses for more flavor depth.
- Thyme: Fresh thyme is ideal, but dried works fine (use about 1/4 teaspoon if using dried). Rosemary or sage can substitute if you prefer different herbs.
Watch Out for These Mistakes While Baking
The biggest mistake when making scalloped potatoes is slicing your potatoes unevenly or too thick, which leads to some pieces being mushy while others stay crunchy – aim for uniform slices about 1/8 inch thick using a mandoline or sharp knife for consistent cooking.
Many people rush the sauce-making step and end up with lumps, so make sure to whisk constantly when adding the milk and broth to your flour mixture, and let it simmer until it’s smooth and thick enough to coat the back of a spoon.
Don’t skip the resting time after baking, as those 15 minutes allow the sauce to thicken up and make serving much cleaner, and if your casserole looks too liquidy when you pull it out, just let it rest a bit longer.
To take this dish to the next level, try adding a layer of cheese between the potato layers (not just on top) for extra flavor throughout, and consider covering the dish with foil if the top starts browning too quickly before the potatoes are tender.
What to Serve With Scalloped Potatoes and Ham?
Since scalloped potatoes and ham is already a pretty hearty dish, I like to keep the sides simple and fresh. A crisp green salad with a tangy vinaigrette helps cut through all that creamy richness, or you could go with roasted green beans or steamed broccoli for something easy. Dinner rolls or biscuits are always a good call if you want some bread on the table, and they’re perfect for soaking up any extra sauce from the potatoes. If you’re feeding a crowd, a fruit salad or some roasted carrots add a nice pop of color and sweetness to balance out the savory flavors.
Storage Instructions
Store: Leftover scalloped potatoes and ham keep really well in the fridge. Just cover the dish tightly with foil or transfer to an airtight container, and it’ll stay good for up to 4 days. This is one of those dishes that actually tastes even better the next day after all the flavors have had time to hang out together.
Freeze: You can freeze this casserole for up to 2 months, though the texture of the potatoes might be a bit softer when you thaw it. Let it cool completely first, then wrap it well in plastic wrap and foil before freezing. I like to portion it out into smaller containers so I can just grab what I need.
Reheat: Cover the dish with foil and warm it in a 350°F oven for about 20-30 minutes until heated through. You can also microwave individual portions for 2-3 minutes, stirring halfway through. If it seems a bit dry, add a splash of milk before reheating to bring back that creamy texture.
| Preparation Time | 20-25 minutes |
| Cooking Time | 75-85 minutes |
| Total Time | 95-120 minutes |
| Level of Difficulty | Medium |
| Servings | 7 servings |
Estimated Nutrition
Estimated nutrition for the whole recipe (without optional ingredients):
- Calories: 2750-2950
- Protein: 110-125 g
- Fat: 105-120 g
- Carbohydrates: 330-355 g
Ingredients
For the cream sauce:
- 1/2 cup butter (I prefer Kerrygold unsalted for a richer flavor)
- 1 small onion
- 1/2 cup flour (I always use King Arthur all-purpose flour)
- 3/4 tsp thyme (freshly minced for best aroma)
- 3 cups milk
- 1/2 cup chicken broth (I like Swanson for more consistent seasoning)
- 1/4 tsp garlic powder
- salt
- pepper
For the assembly:
- 3 lb potatoes (peeled and sliced into 1/8-inch rounds)
- 2 cups ham (diced into 1/2-inch cubes)
- 1.5 cups cheddar cheese
Step 1: Prepare Mise en Place and Start the Oven
- 3 lb potatoes
- 1 small onion
- 2 cups ham
- 1.5 cups cheddar cheese
Preheat your oven to 350°F and lightly grease a 9×13 inch baking dish.
While the oven heats, peel the potatoes and slice them into thin 1/8-inch rounds—I recommend using a mandoline for consistency, which ensures even cooking.
Dice the onion finely, cube the ham into 1/2-inch pieces, and shred the cheddar cheese.
Have all ingredients measured and ready before you begin cooking the sauce.
Step 2: Build the Béchamel Sauce Base
- 1/2 cup butter
- 1 small onion
- 3/4 tsp thyme
- 1/2 cup flour
Melt the butter in a medium saucepan over medium heat, then add the diced onion and cook for 3-4 minutes, stirring occasionally, until soft and translucent.
Add the thyme and cook for another 30 seconds to release its aromatic oils.
Sprinkle in the flour and stir constantly for 1-2 minutes to create a light roux—this cooks out the raw flour taste without browning it.
Step 3: Complete the Sauce and Season
- 3 cups milk
- 1/2 cup chicken broth
- 1/4 tsp garlic powder
- salt
- pepper
Gradually whisk in the milk and chicken broth to avoid lumps, stirring constantly until the mixture is smooth.
Bring to a boil over medium-high heat and let it bubble for 1 minute to thicken slightly.
Remove from heat and season generously with salt, pepper, and garlic powder.
I like to taste and adjust the seasoning at this point—the sauce should be flavorful since it won’t develop much more flavor in the oven.
Step 4: Layer Potatoes, Ham, and Sauce
- sliced potatoes from Step 1
- diced ham from Step 1
- béchamel sauce from Step 3
Divide the sliced potatoes, diced ham, and the béchamel sauce from Step 3 into three equal portions.
Start by spreading 1/3 of the potatoes evenly in the prepared baking dish, then layer 1/3 of the ham over the potatoes, followed by 1/3 of the sauce.
Repeat this layering two more times, finishing with sauce on top.
Ensure the potatoes are fully submerged in sauce to cook evenly.
Step 5: Bake Covered and Partially Uncovered
Cover the baking dish tightly with foil and bake for 50 minutes.
This initial covered time allows the potatoes to steam and soften without the top drying out.
After 50 minutes, remove the foil and bake for an additional 25-35 minutes uncovered until the potatoes are completely tender when pierced with a fork and the top is golden brown.
Step 6: Add Cheese and Final Bake
- 1.5 cups cheddar cheese
About 15 minutes before the casserole finishes baking (roughly 10-20 minutes into the uncovered baking time), sprinkle the shredded cheddar cheese evenly over the top.
Return to the oven and bake until the cheese is melted and lightly golden.
The cheese adds richness and creates a delicious crust on top.
Step 7: Rest and Serve
Remove the casserole from the oven and let it rest for 15 minutes before serving.
This resting period allows the layers to set slightly and makes it easier to portion without falling apart.
The dish will be piping hot and the flavors will have melded together beautifully.

Best Scalloped Potatoes and Ham
Ingredients
For the cream sauce::
- 1/2 cup butter (I prefer Kerrygold unsalted for a richer flavor)
- 1 small onion
- 1/2 cup flour (I always use King Arthur all-purpose flour)
- 3/4 tsp thyme (freshly minced for best aroma)
- 3 cups milk
- 1/2 cup chicken broth (I like Swanson for more consistent seasoning)
- 1/4 tsp garlic powder
- salt
- pepper
For the assembly::
- 3 lb potatoes (peeled and sliced into 1/8-inch rounds)
- 2 cups ham (diced into 1/2-inch cubes)
- 1.5 cups cheddar cheese
Instructions
- Preheat your oven to 350°F and lightly grease a 9x13 inch baking dish. While the oven heats, peel the potatoes and slice them into thin 1/8-inch rounds—I recommend using a mandoline for consistency, which ensures even cooking. Dice the onion finely, cube the ham into 1/2-inch pieces, and shred the cheddar cheese. Have all ingredients measured and ready before you begin cooking the sauce.
- Melt the butter in a medium saucepan over medium heat, then add the diced onion and cook for 3-4 minutes, stirring occasionally, until soft and translucent. Add the thyme and cook for another 30 seconds to release its aromatic oils. Sprinkle in the flour and stir constantly for 1-2 minutes to create a light roux—this cooks out the raw flour taste without browning it.
- Gradually whisk in the milk and chicken broth to avoid lumps, stirring constantly until the mixture is smooth. Bring to a boil over medium-high heat and let it bubble for 1 minute to thicken slightly. Remove from heat and season generously with salt, pepper, and garlic powder. I like to taste and adjust the seasoning at this point—the sauce should be flavorful since it won't develop much more flavor in the oven.
- Divide the sliced potatoes, diced ham, and the béchamel sauce from Step 3 into three equal portions. Start by spreading 1/3 of the potatoes evenly in the prepared baking dish, then layer 1/3 of the ham over the potatoes, followed by 1/3 of the sauce. Repeat this layering two more times, finishing with sauce on top. Ensure the potatoes are fully submerged in sauce to cook evenly.
- Cover the baking dish tightly with foil and bake for 50 minutes. This initial covered time allows the potatoes to steam and soften without the top drying out. After 50 minutes, remove the foil and bake for an additional 25-35 minutes uncovered until the potatoes are completely tender when pierced with a fork and the top is golden brown.
- About 15 minutes before the casserole finishes baking (roughly 10-20 minutes into the uncovered baking time), sprinkle the shredded cheddar cheese evenly over the top. Return to the oven and bake until the cheese is melted and lightly golden. The cheese adds richness and creates a delicious crust on top.
- Remove the casserole from the oven and let it rest for 15 minutes before serving. This resting period allows the layers to set slightly and makes it easier to portion without falling apart. The dish will be piping hot and the flavors will have melded together beautifully.







