• 3 tablespoons butter, plus more for greasing
  • 1 small yellow onion, diced
  • 3 tablespoons all-purpose flour
  • 1 cup half-and-half
  • ½ cup whole milk
  • salt and ground black pepper to taste
  • 1 teaspoon garlic powder
  • ½ teaspoon Worcestershire sauce
  • ½ teaspoon onion powder
  • ¼ teaspoon paprika
  • 4 large russet potatoes, peeled and thinly sliced
  • 1 ½ cups chopped hickory smoked ham
  • ½ cup grated Cheddar cheese
  • ½ cup grated Monterey Jack cheese


  1. Preheat the oven to 375 degrees F (190 degrees C). Grease a large baking dish with butter.

  2. Melt butter in a large skillet over medium heat. Cook and stir onion in hot butter until slightly softened, 3 to 4 minutes. Whisk in flour and cook until golden brown, about 2 minutes. Pour in half-and-half and milk; whisk until sauce is thickened, 3 to 4 minutes more. Remove from heat; season with salt and pepper. Stir in garlic powder, Worcestershire sauce, onion powder, and paprika.

  3. Place 1/2 of the sliced potatoes into the prepared baking dish; top with 3/4 cup ham. Sprinkle with 1/4 cup Cheddar cheese and 1/4 cup Monterey Jack cheese. Pour in 1/2 of the sauce from the skillet. Repeat layering the remaining potatoes, 3/4 cup ham, 1/4 cup Cheddar, 1/4 cup Monterey Jack, and sauce. Cover the dish with aluminum foil.

  4. Bake in the preheated oven for 40 minutes. Remove the foil and continue to bake until cheese is golden and sauce is bubbling, 20 to 30 minutes more.