Have all the ingredients for this recipe prepared and ready to cook before beginning. Bring about 3 quarts of water to a boil and have it ready for the pasta.
Cut the asparagus into lengths about 2 inches long. If the stalks are thick, cut them in half or quarter them. Leave the tips in tact. Heat the butter in a large, deep skillet and add the asparagus pieces, salt, and pepper to taste. Cook for 4 to 5 minutes, or until crisp-tender and lightly browned. Transfer the asparagus to a plate and reserve.
In the same pan, add the oil and garlic. Cook until lightly browned and remove and discard garlic. Add the tomatoes, parsley, basil, salt and pepper to taste. Cook, stirring, for about 10 minutes.
Meanwhile, add the pasta and salt to the water and, when it returns to a boil, cook for about 7 minutes or until tender. Do not overcook.
Just before the pasta is done, turn off the heat under the tomatoes and add the beaten eggs, stirring vigorously so that they blend without curdling. Do not boil the sauce after the eggs are added. (If you are nervous about curdling the eggs, you may temper them in, by stirring a ladleful of the hot tomato sauce into the eggs, then whisking the mixture back into the pan.)
Add the asparagus to the tomato sauce and stir to blend.
Drain the pasta immediately. Add the tomato sauce and asparagus, and toss with half the cheese. Serve piping hot with the remaining cheese on the side.