Preheat oven to 375° F.
Peel potatoes, cut into 1/2-inch cubes (approximately 6+ cups chopped potatoes). Pour the potatoes into a medium pot and fill with water.
Bring to a boil; let boil for 5-6 minutes. Don’t let the potatoes get overly soft/tender; just slightly softened. Drain, set aside.
Grease a 9x 13 inch or any 3–4-quart oven-safe baking dish. Add the drained potatoes, ham, and two cups of shredded cheese. Gently toss all together and set aside.
In a saucepan used to cook the potatoes, melt the butter over medium heat. Add in the onion and garlic. Cook and stir occasionally until the onions are translucent, about 3 minutes.
Stir in the salt, pepper, smoked paprika, ground mustard, parsley, and flour. Reduce to low heat.
Slowly stir in the milk and sour cream. Simmer for 3-5 minutes, until it has thickened to a gravy consistency. Remove from the heat.
Pour the warm sauce over the ham and potatoes and toss gently to coat.
Cover with aluminum foil and bake for 30 minutes.
Remove the foil, sprinkle remaining cup of cheese on top, and return to the oven for 5-10 more minutes until the cheese is melted.
Remove from the oven and garnish with fresh parsley, green onion, or chives, if desired.