Bring a large pot of well-salted water to a boil over high heat.
In a 10-inch skillet, heat the olive oil over medium heat. Add the pancetta or guanciale and 1/2 tsp. pepper and cook, stirring occasionally, until golden and beginning to crisp, about 5 minutes. (If the meat is browning too quickly, reduce the heat to medium low.) Add the onion and continue to cook until it’s soft and golden and the meat is crisp, about 5 minutes more.
Remove the pan from the heat and carefully spoon off all but about 2 Tbs. of the fat. Add 1 Tbs. water to the pan and scrape any brown bits from the bottom.
Beat the eggs in a small bowl until smooth and set aside.
Cook the spaghetti in the boiling water according to package directions until it’s just shy of al dente. Reserve 1/4 cup of the cooking water and drain the spaghetti. Transfer the spaghetti to the skillet, set it over medium heat, and toss with tongs to coat the spaghetti with the fat and finish cooking to al dente, about 1 minute. If the pasta is too dry or starts to stick to the bottom of the pan, add 1 or 2 tsp. of the pasta water. You want the bottom of the pan to be just barely wet. If the pan is too dry, the eggs will scramble when you add them.
Remove the skillet from the heat and pour the eggs over the pasta, tossing quickly and continuously until the eggs thicken and turn to the consistency of a thin custard, 30 seconds to 1 minute. (Tossing constantly is important, as it prevents the eggs from scrambling.)
The sauce should be smooth and creamy, and it should cling to the pasta. Add a little more pasta water if necessary to loosen the sauce. Stir in the Parmigiano and season to taste with salt and pepper (you may not need additional salt, as both guanciale and pancetta can be very salty). Serve immediately.
nutrition information (per serving):
sat fat g
Photo: Scott Phillips