Bring a large pot of generously salted water to a boil. Cook spaghetti according to package directions until al dente.
While the pasta cooks, whisk the eggs, Pecorino Romano, Parmesan, and black pepper in a medium bowl until well combined. Set aside.
In a large skillet, cook the guanciale or pancetta over medium heat until crispy and browned. Remove the meat with a slotted spoon and set aside, leaving the rendered fat in the skillet.
Once the spaghetti is cooked, reserve about 1.5 cups of the pasta water. Drain the spaghetti and add it directly to the skillet with the rendered fat. Toss to coat.
Remove the skillet from the heat. Quickly pour the egg and cheese mixture over the hot pasta, tossing continuously with tongs. The residual heat will cook the eggs and create a creamy sauce. If the sauce is too thick, gradually add small amounts of the reserved pasta water until it reaches your desired consistency.
Stir in the cooked guanciale or pancetta. Serve immediately, garnished with extra Pecorino Romano cheese and black pepper.
Notes
For an authentic taste, use guanciale and Pecorino Romano. If you can't find them, pancetta and Parmesan are acceptable substitutes.