Preheat oven to 400 degrees F.
In a large bowl, whisk together eggs, milk, salt, and pepper until foamy.
Melt butter in a cast-iron pan over medium heat. Add the onion and potatoes and cook thoroughly. Pour the eggs over the mixture.
Pull the edges away from the sides of the pan with a spatula so the eggs flow to the bottom of the pan. When the frittata is half set, add the ham.
Transfer the pan to the heated oven. Bake for 10 minutes until puffed and golden. Top with sour cream, salsa, and chives before serving.