In a large pot of boiling salted water, cook pasta according to package instructions, adding the asparagus in the last minute of cooking. Reserve 1 cup cooking liquid; drain pasta and asparagus and return to pot along with butter and Parmesan. Toss until butter is melted, adding enough pasta water to create a thin sauce that coats pasta.
While pasta is cooking, in a large straight-sided skillet, heat 2 inches water over medium until a few bubbles rise to the top. Crack each egg into a small bowl and gently pour into skillet. Cook until whites are set and yolks are runny, 4 minutes. With a slotted spoon, transfer eggs to a parchment-lined baking sheet.
To serve, divide pasta among four bowls, top each serving with an egg, and season with salt and pepper. Sprinkle with Parmesan if desired.