Preheat the oven to 350°F.
Heat the oil in a large (10- or 12-inch) ovenproof skillet over medium-high heat. Add the sliced potatoes and cook, stirring frequently, until they soften and become golden brown, about 8 minutes. Transfer to a plate and tent loosely with foil to keep warm.
Reduce the heat to medium. Add the onions and red pepper to the same skillet. Cook and stir until the vegetables soften and the onions become translucent, about 5-7 minutes.
Add the spinach and minced garlic. Cook for about 1 minute, stirring, until the spinach wilts and the garlic becomes fragrant.
Return the potatoes to the skillet and toss gently to combine. Season with salt and pepper to taste. Remove from heat.
In a large mixing bowl, whisk together the eggs and milk until combined. Season lightly with salt and pepper if desired.
Pour the egg mixture evenly over the vegetables in the skillet. Sprinkle most of the Gouda and Havarti on top, reserving about 1/4 cup of each cheese.
Transfer the skillet to the oven and bake until the eggs are set and the center jiggles just slightly when shaken, about 15 minutes.
Sprinkle the remaining cheese on top and place under the broiler until the cheese is melted and lightly browned, 5-8 minutes. Watch closely to avoid burning.
Remove from oven and let the frittata rest in the skillet for 5 minutes before slicing.
Garnish with chopped basil and serve warm.