Updated
This creamy ham and potato casserole is one of those cozy, classic dishes I come back to every holiday season. It’s perfect for Christmas dinners, Easter brunch, or anytime you want something warm and comforting on the table. The layers of tender potatoes, savory ham, and creamy Béchamel sauce bake together into a rich, satisfying casserole that always feels a little special, but is easy enough to make any night of the week.

5-Star Review
“I made this tonight with leftover ham from an early Christmas celebration. Turned out great! I did not believe that the potatoes would actually be tender after 45 min but they were—I used Yukon Gold, turned out really nice…ill make again–by popular demand!” Audrey
The secret to this casserole is the creamy Béchamel sauce that ties everything together. I tested it a few different ways, and I much preferred the creamy sauce for the balance of texture and flavor. Instead of a heavy cheese sauce, the béchamel creates a smooth base that thickens as it bakes and coats every layer without turning greasy or separating. Thinly sliced potatoes cook right in the sauce until perfectly tender, while the ham adds a savory, salty contrast that keeps the dish from feeling too rich. This is also a great way to use leftover ham from the holidays. If you add extras like onions or vegetables, it’s best to cook off any excess moisture first so the sauce stays balanced, making this a reliable, well-structured casserole every time.
Tips for Beginners
- Slice the potatoes evenly for consistent cooking. I always use a sharp knife or mandoline to keep the slices uniform so they cook at the same rate. If some pieces are thicker than others, you’ll end up with a mix of undercooked and overly soft potatoes.
- Take the time to properly thicken the Béchamel. This is what gives the casserole its creamy, stable texture. Cook the butter and flour together until lightly golden, then slowly whisk in the milk. The sauce should be smooth and thick enough to coat the back of a spoon before layering. If it’s too thin, the casserole can turn watery as it bakes.
- Let the casserole rest before serving. I always let it sit for at least 10–15 minutes after baking. This helps the sauce set and makes it much easier to slice and serve without everything falling apart.
- Use just enough cheese for balance. It’s tempting to load it up, but too much cheese can make the casserole greasy and overpower the other flavors. I stick to a moderate amount so it melts into the béchamel and enhances the dish instead of taking over.
Creamy Ham and Potato Casserole

Ingredients
- 2 tbsp unsalted butter (¼ stick)
- 1 yellow onion finely diced
- 3 tbsp all-purpose flour
- 1¼ cups whole milk or half-and-half
- ½ cup chicken stock or chicken broth
- ½ tsp fine sea salt
- ½ tsp ground black pepper
- ½ tsp garlic powder
- 2 lbs. russet potatoes peeled and diced small
- 2½ cups diced cooked ham precooked chicken or turkey also works
- 4 oz. freshly shredded white cheddar cheese (about 1 cup)
Video
Instructions
- Preheat the oven to 400°F. Grease a 9×13 inch baking dish with butter or non-stick cooking spray. Set aside.
- In a medium saucepan melt the butter. Add the diced onion and cook over medium heat until translucent.2 tbsp unsalted butter, 1 yellow onion
- Sprinkle the flour over the cooked onion and stir to combine. Add in the milk, chicken stock, sea salt, black pepper, and garlic powder. Continue to heat, stirring often, until warmed through and slightly thickened.3 tbsp all-purpose flour, 1¼ cups whole milk, ½ cup chicken stock, ½ tsp fine sea salt, ½ tsp ground black pepper, ½ tsp garlic powder
- Spread the potatoes evenly in the bottom of the prepared baking dish and top with the diced ham. Pour the milk mixture over the ham and potatoes.2 lbs. russet potatoes, 2½ cups diced cooked ham
- Cover and bake for 40-45 minutes.
- Remove from oven and top with shredded cheese. Continue to bake, uncovered for an additional 10-15 minutes or until the cheese is completely melted and potatoes are tender.4 oz. freshly shredded white cheddar cheese
Equipment
- 9×13 Baking Pan
Nutrition information is automatically calculated, so should only be used as an approximation.
How to Make Creamy Ham and Potato Casserole Step by Step

Gather the ingredients: Gather all the ingredients together. Preheat the oven to 400°F and grease a 9×13-inch baking dish. Use butter or nonstick spray and then set the dish aside.

Sauté the onions: Melt 2 tbsp butter in a medium saucepan and cook one onion over medium heat until it’s translucent.

Make the sauce: Sprinkle 3 tbsp all-purpose flour over the cooked onion and stir to combine. Pour in 1¼ cups whole milk, ½ cup chicken stock, ½ tsp fine sea salt, ½ tsp ground black pepper, and ½ tsp garlic powder. Stir often over medium heat, until warmed through and slightly thickened.

Assemble and bake: Spread 2 lbs. peeled and diced russet potatoes evenly in the bottom of the prepared baking dish and top with 2½ cups diced ham. Pour the milk mixture over the ham and potatoes. Cover and bake for 40-45 minutes.

Melt the cheese: Remove from the oven and sprinkle with 4 oz. shredded white cheddar cheese. Continue baking, uncovered, for 10-15 minutes or until the cheese is completely melted and the potatoes are tender.

Serve: Serve the casserole warm and enjoy.

How to Store
To prepare ahead of time, I follow the recipe through step 4, then cover and refrigerate overnight. The next day, I let the casserole warm up to room temperature while the oven preheats, then proceed with the recipe as written from step 5. I sometimes need to add a few extra minutes to the final bake time if the casserole is still cold when it goes into the oven.
Store leftover ham and potato casserole in an airtight container, or cover the casserole dish with plastic wrap. Keep in the refrigerator up to 4 days.
To reheat any leftovers, place an individual portion in a microwave-safe dish. Heat on 50% power for 1-2 minutes at a time until heated through. Stir well at least once during heating.
To reheat a larger portion, warm the casserole in the oven at 350°F for about 20 minutes or until warmed through.
Let the casserole cool to room temperature, then cover the dish tightly with plastic wrap and/or aluminum foil. You can also scoop it into a freezer-safe bag. Freeze up to 3 months, then thaw in the fridge before reheating.
Serving Suggestions
This dish works just as well for dinner as it does for brunch, which is one of the reasons I make it so often. For an easy dinner, I like to serve it with something simple on the side, like soft dinner rolls to soak up the creamy sauce. If I’m serving it as a side dish, it pairs really well with crispy proteins like air fryer chicken, since the contrast balances out the richness of the casserole. It’s also a great addition to a weekend brunch spread, especially with oven-baked bacon for something salty and crisp alongside it. And if you want to round things out even more, adding a side of eggs or home fries makes it feel like a full, comforting meal.
Recipe Variations
- Swap the cheeses to change the flavor profile: I like using a mix of cheeses depending on what I have on hand. Sharp cheddar adds bold flavor, while Gruyère or fontina melt more smoothly for a creamier texture. You can also mix in a little Parmesan for a salty, nutty finish. Just make sure to use cheeses that melt well so the sauce stays smooth and not grainy.
- Add veggies for extra flavor and texture: You can easily mix in vegetables like spinach, mushrooms, or broccoli to make this more balanced. Just be sure to cook off any excess moisture first, especially with high-water vegetables like mushrooms or zucchini. If you skip this step, the extra liquid can make the dish watery instead of creamy.
- Use pre-cooked potatoes to save time: If you want to speed things up, I’ve had great results using pre-cooked or partially cooked potatoes. You can microwave sliced potatoes for a few minutes or use leftover roasted or boiled potatoes. This cuts down on baking time and helps ensure the potatoes turn out tender every time.
More Cozy Potato Casseroles
- Scalloped Potatoes and Ham: This is the closest match in both ingredients and method, with layers of thinly sliced potatoes, ham, and a creamy sauce baked until tender and bubbly.
- Loaded Scalloped Potatoes: A more indulgent take on layered potatoes, made with cheese and bacon for a rich, holiday-style side that pairs perfectly with ham dishes.
- Crockpot Potato Casserole: A creamy, cheesy potato casserole made with hashbrowns and simple ingredients, ideal for holidays when you want an easy, hands-off side dish.













How do I make this a freezer meal?
Hi Leah, Let the casserole cool to room temperature, then cover the dish tightly with plastic wrap and/or aluminum foil. You can also scoop it into a freezer-safe bag. Freeze up to 3 months, then thaw in the fridge before reheating.
What temp. Is the oven???
Hi Hannah, the oven temp is 400°F. It’s listed in step 1 of the recipe!
Thank you. Sorry! I did no t see that. My apologies. I. Making this as we speak. I paroled the potatoes so they would be sure to be cooked thoroughly. I noticed some people we iple were disappointed because their potatoes were not cooked through after an hour and 15.
Turned out very good. All my kids liked it. So that’s a win. I made it exactly as posted except the cheese. I had about half a cup of weight cheddar and used some Colby jack as well
I haven’t had a chance to make this specific recipe but I’ve always loved a good ham and potato casserole! If I managed to forget to buy a yellow onion could I substitute it with a red one? I was considering making it without the onion and just adding onion powder to at least have that onion flavor. What would you suggest? I could always go back to the store but I’m feeling a bit lazy!
Hi Kaylee, you could certainly try with red onion, but the flavor will be different. Onion powder would also be a good substitute.
I meant to like Becky’s reply. As a chef from the south, knowing your roux is very important.
I made this recipe for a breakfast change at our small farm. I used shredded Mexican style cheese blend because it was what I had on hand. It was served with scrambled eggs. I would’ve taken a photo, but , there was nothing left! Enough said.
So glad you enjoyed it, Rob!
Hi Laura, we’re sorry to hear this recipe didn’t work out for you! I’m not sure how your sauce turned out so thick, as there’s quite a bit of liquid added. I am wondering if perhaps you cooked the sauce for a bit too long. It’s important to only cook it until it is slightly thickened, not paste-like!
This recipe was so amazing and easy, I subbed the ham for farmer sausage, added a touch of nutmeg and it was absolutely perfect. Loved that it didn’t have any condensed soup! My kids loved it. Going into the rotation forsure!
I was so excited about this recipe. Was the sauce actually a cream of chicken? I added mushrooms and it was outstanding!
It’s a creamy chicken sauce, but you could probably use cream of chicken as a quick substitute! So glad you enjoyed it!
Wow, first one of your recipes I’ve tried. Both of my picky eaters loved it. The only change was to par boil my diced potatoes for a few minutes. I did add bacon bits before pouring the sauce over, I was hoping to have enough leftover for work lunches, but the family polished it off that night