Preheat oven to 350°F/175°C with rack positioned in the upper ⅓ of the oven. This will prevent the bottom from overcooking while the top sets.
Skip this step if using leftover cooked potatoes. Pierce the sweet potatoes with a fork all over the skin. Microwave for 2 minutes, turn and repeat for 2 minutes. They don't have to be completely cooked, just until they are not hard. When each of them are done, place in the fridge to cool quickly. When cool enough to handle, they will be easy to peel. Chop into ½-inch (1 ¼ cm) pieces.
Add the eggs, fontina, Parmesan, potatoes, sage, salt and pepper to a bowl. Stir to mix well, set aside.
To a 10-inch cast iron skillet over medium heat, add the butter. When melted and bubbling, add the onions and cook until softened about 8-10 minutes.
Pour the egg mix into the pan and stir to evenly distribute everything.
Transfer the frittata to the oven and bake for 40 to 50 minutes or until the top shows no more liquid and the top should not jiggle when you shake the pan and eggs are set. The time will depend on how thick your frittata is. Remove and allow to cool slightly in the pan before serving to prevent the frittata from weeping/leaking moisture when cut into.