Bring a large pot of lightly salted water to a boil. Cook spaghetti in the boiling water, stirring occasionally, until tender yet firm to the bite, about 12 minutes.
Meanwhile, heat a large skillet over medium-low heat and cook bacon until browned, stirring occasionally, 5 to 6 minutes. Transfer bacon to a paper-towel lined plate using a slotted spoon. Remove all but 1 tablespoon bacon fat from the skillet.
Add asparagus to the skillet and cook in the bacon fat until asparagus begins to brown, about 3 minutes. Add garlic and cook until fragrant, about 30 seconds. Transfer asparagus and garlic to the plate with the bacon.
Reserve 2 tablespoons Parmesan cheese for garnish. Whisk together remaining Parmesan cheese, egg yolks, Greek yogurt, salt, and pepper in a small bowl.
Drain spaghetti, setting aside about 3/4 cup of the cooking water, and return spaghetti to the pot. Stir in egg yolk mixture and toss for 1 minute until evenly coated. Return the pot back to low heat and cook, adjusting consistency with reserved cooking water if necessary, 1 to 2 minutes.
Turn off heat, pour in half-and-half, and stir well. Mix in bacon and asparagus. Garnish with reserved Parmesan cheese and chopped parsley. Serve immediately.