To make the sauce, melt the butter in a small heavy-based saucepan over a medium-low heat. Stir in the flour and whisk in the milk to thicken. Stir through the cream cheese, Parmigiano Reggiano and lemon zest and season to taste. Keep warm and stir periodically to prevent a skin from forming.
Cook asparagus spears in boiling salted water until just tender (3-5 minutes). Remove from the heat, drain and plunge quickly into ice cold water. Drain again and toss in olive oil, salt and pepper. Meanwhile, poach the eggs in boiling water for 2-3 minutes. Drain on kitchen paper. To serve, lay spears of asparagus on two serving plates, top with a poached egg and drizzle over plenty of sauce. Sprinkle over a little parsley and black pepper and top with Parmigiano Reggiano shavings.