Heat a large oven-safe sauté pan over medium-high heat. Add bacon and cook, stirring, until almost crisp. Remove bacon with a slotted spoon. Drain on paper towels. Discard fat, reserving 2 tablespoons in pan.
Add onions to pan; season with salt and pepper. Sauté over high heat until onions start to turn golden. Lower heat to medium and cook until caramelized, stirring often, 25 to 30 minutes.
Add eggs and cook, stirring, until onions are evenly distributed and eggs start to set on the bottom. Continue cooking and stirring 1 or 2 minutes until eggs are nearly cooked. Stir in bacon.
Remove from heat and sprinkle cheese evenly over top. Place pan in oven and bake 8 to 10 minutes, until eggs are puffy on top, cheese has melted, and frittata is cooked through.