Fill a 10-quart stockpot with 7 quarts water and bring to a boil over high heat. Add the salt, stir and reduce the heat to low, and cover the pot.
Place a 10-inch skillet over low heat. Add the pancetta or bacon and cook, stirring frequently to prevent sticking, until it has given up its fat and is beginning to color and crisp, 5 to 7 minutes. Add the onion, reduce the heat, and cook, stirring occasionally, until the onion is soft and beginning to color and the pancetta or bacon is crisp, about 7 minutes.
While the pancetta and onion are cooking, place a large stainless steel or glass bowl next to the stove.
Pour the egg and egg yolks into a medium bowl and whisk until pale and increase in volume, 3 to 5 minutes. Set the bowl with the eggs next to the large bowl.
When the pancetta and onions are cooked, remove them from the heat. Raise the heat under the pot of water and bring it back to a boil.
Add the pasta and cover the pot until the water begins to bubble. Lift the lid and immediately taste the pasta. When the pasta is al dente, about 2 minutes (longer if using dried pasta), scoop out about 1/4 cup of the cooking water, then drain the pasta and add to the large bowl. Add the onion mixture and olive oil and mix gently but thoroughly with tongs or a wooden spoon.
Add the eggs to the pasta and mix very quickly and thoroughly. (If you aren’t fast here, the eggs will scramble). If the pasta looks dry at this point, add some of the reserved cooking water 1 tablespoon at time, mixing between additions. Stir in cheeses and pepper and mix again. Transfer the pasta to a serving dish and serve immediately.