Bring a large pot of salted water to a boil over high heat.
Beat the eggs in a small bowl and set aside.
In a large skillet, heat the olive oil over medium heat. Add the pancetta and cook until golden and beginning to crisp, about 5 minutes. Add the sweet onions and cook for another few minutes, until they begin to soften, about 4-5 minutes. Add the asparagus and cook until the asparagus is crisp-tender, about 3-4 minutes. With a slotted spoon, remove the pancetta asparagus mixture from the pan and set aside (leave any remaining oil in the pan).
Cook the spaghetti “al dente” according the package directions and drain, reserving about 1/2 cup of the cooking water. Add the drained spaghetti to the skillet with the olive oil, set over medium heat. Using tongs, toss the spaghetti with the olive oil until well coated. Add about ¼ cup of the cooking water to the skillet (if the bottom of the pan is too dry, the eggs will scramble them when you add them).
Remove the skillet from the heat and add the eggs. Quickly toss the pasta with the eggs until the eggs thicken and coat the pasta – continually toss so that the eggs don’t scramble. Add a little more cooking water if the sauce seems too thick.
Add in the reserved pancetta, sautéed onions, asparagus and parmesan cheese and season to taste with pepper. Garnish with chopped fresh parsley, if desired.