Whisk together eggs, basil, parmesan, 1/4 teaspoon salt, and 1/4 teaspoon pepper in a large bowl.
Cook pancetta in a 10-inch heavy skillet over medium heat, stirring, until crisp. Transfer with a slotted spoon to a large bowl then pour off all but 2 tablespoons fat.
Add potatoes and 1/4 teaspoon each of salt and pepper to skillet, and sauté over medium-high heat until golden, about 3 minutes. Cover skillet and continue to cook over medium-low heat, stirring a few times, until potatoes are just tender, about 3 minutes more. Transfer the potatoes with a slotted spoon to bowl containing the pancetta.
Add 1 tablespoon oil to skillet and sauté onion and garlic over medium-high heat until pale golden, about 4 minutes, then add spinach and sauté until just wilted.
Gently add the potatoes and pancetta, the roasted peppers, and remaining tablespoon of oil into onion mixture, spreading it evenly.
Pour egg mixture evenly over vegetables and cook over medium-high heat, lifting up cooked egg around edges with a heat-proof spatula to let uncooked egg flow underneath, 2 to 3 minutes. Reduce heat to medium and cook, covered, until it appears mostly set, with a moist top and center, 3 to 5 minutes more.
Remove lid. If using the Provolone, broil frittata 5 to 7 inches from heat until set, but not browned, 1 to 2 minutes, then top with an even layer of cheese and continue to broil until browned and bubbling, 1 to 3 minutes (watch carefully).
If skipping the cheese, broil frittata until the top is lightly browned, 1 to 3 minutes (making sure it doesn't burn).
If using a nonstick skillet, slide the frittata onto a serving plate. If using a cast-iron skillet, cut and serve wedges directly from the skillet.