Start by preheating your oven to 350°F (175°C). The moderate temperature helps the eggs cook evenly without getting rubbery.
Spray a 12-cup muffin tin really well with cooking spray, making sure to coat the sides.
Dice the bell peppers and onions into small, even pieces (about 1/4 inch).
In a large bowl, crack the eggs. I like to crack them one at a time into a separate small bowl first – this way if you get a bad egg or some shell, it won’t ruin the whole batch.
Add the milk, salt, and pepper to the eggs. Whisk everything together until well combined and slightly frothy – you want to see the yolks and whites fully blended with no streaks.
Stir in diced vegetables, ham, and about 3/4 of the cheese, saving some cheese for topping.
Using a 1/3 cup measure or a ladle, portion the egg mixture into the muffin cups. Fill them about 3/4 full – they will puff up as they bake. Sprinkle the remaining cheese on top of each muffin.
Bake for 20-25 minutes. You’ll know they’re done when the tops are lightly golden, and the centers are set but still look slightly moist – if you gently shake the pan, they shouldn’t jiggle. A toothpick inserted in the center should come out clean.
Let them cool in the pan for about 5 minutes – they’ll shrink slightly and pull away from the sides, making them easier to remove. Run a butter knife around the edges of each muffin and carefully lift them out.