Placed diced potatoes into a large pot. Add enough water to cover the potatoes. Bring to a boil. Reduce heat and simmer for 15-20 minutes or until tender. Drain.
Preheat the oven to 350 degrees F. In a medium saucepan, melt the butter. Whisk in the flour. Slowly add the milk, a little at a time while whisking. Add salt and pepper. Whisk until thickened. Add 1 cup of the shredded cheese and stir until the cheese has melted.
Grease a 9×13 inch baking dish. Pour the potatoes, ham, and onion inside. Pour the cheese mixture over the top. Top with additional shredded cheddar cheese.
Place into the oven and bake at 350 degrees F. for 30 minutes.