Try my new budgeting app Cheddar 🧀
Better than YNAB, Mint (RIP), or EveryDollar.
Export 7 ingredients for grocery delivery
Step 1
Arrange a rack in the top third of the oven and heat the oven to 350°F. Coat a 2-quart baking dish (such as an 8x8x2-inch) with cooking spray or butter.
Step 2
Peel and cut 2 pounds russet potatoes into 1/2-inch cubes (about 5 1/2 cups). Place in a large bowl and add 1 cup diced ham. Dice 1/2 medium yellow onion. Grate 8 ounces sharp cheddar cheese on the large holes of a box grater (about 2 cups).
Step 3
Melt 2 tablespoons unsalted butter in a medium saucepan over medium heat. Add the onion and sauté until softened, about 5 minutes. Sprinkle with 2 tablespoons all-purpose flour and cook, stirring constantly, for 1 minute. Add 2 cups whole or 2% milk, 1 teaspoon kosher salt, and 1/8 teaspoon black pepper, and stir until the flour is dissolved. Bring to a simmer, stirring often. Simmer until thickened to the consistency of cream sauce, 2 to 3 minutes more. Add 1 1/2 cups of the cheese and stir until completely melted. Taste and season with more kosher salt as needed.
Step 4
Pour over the potato and ham and stir to combine. Transfer to the baking dish and spread into an even layer.
Step 5
Bake until the potatoes in the center of the baking dish are knife tender, 1 hour and 15 minutes to 1 1/2 hours. Sprinkle the remaining 1/2 cup cheese over the casserole. Turn the oven on to broil and broil until the cheese on top is melted and browned in spots, 2 to 3 minutes. Let cool 10 minutes for the sauce to thicken before serving.