Preheat the oven to 350°F (175°C). Grease a 1-quart baking dish or individual ramekins.
In a medium saucepan, whisk together sugar, flour, and salt. Gradually add milk, stirring constantly to combine.
Cook over medium heat, stirring frequently, until the mixture thickens and just starts to boil. Remove from heat.
In a separate bowl, lightly beat the egg yolks. Slowly whisk about 1/2 cup of the hot milk mixture into the yolks to temper them. Then, return the yolk mixture to the saucepan and stir well.
Stir in lemon juice, lemon zest, and vanilla extract until fully incorporated.
In a clean bowl, beat egg whites until stiff peaks form. Gently fold the egg whites into the lemon mixture until just combined, being careful not to deflate the mixture.
Pour the mixture into the prepared baking dish or ramekins. Place the dish in a larger baking pan and fill the outer pan with hot water halfway up the sides of the pudding dish (water bath).
Bake for 35-40 minutes or until the pudding is set and lightly golden on top.
Remove from oven and cool slightly before serving. Dust with powdered sugar if desired.