Set up your tools. Grab a medium saucepan, a whisk, a heatproof spatula, and 4–6 small cups or ramekins.
Have a fine-mesh strainer ready if you want an ultra-smooth finish.
Mix dry ingredients. In the saucepan (off heat), whisk together the sugar, cornstarch, and salt until no lumps remain. This helps the cornstarch disperse evenly once the liquid goes in.
Whisk in milk gradually. Slowly add the milk while whisking until the mixture is smooth. This step prevents clumps and keeps the pudding silky.
Add egg yolks. Whisk in the yolks until fully combined.
The mixture will look pale and slightly thickened from the cornstarch.
Cook gently. Set the saucepan over medium heat. Cook, whisking constantly and scraping the corners, until it begins to thicken, 5–8 minutes. When it starts to bubble, reduce the heat to low and cook for 1–2 minutes more to fully activate the cornstarch.
The texture should be thick but pourable.
Finish with flavor. Remove from heat. Whisk in the butter, vanilla extract (and vanilla bean paste if using) until smooth and glossy.
Strain (optional but excellent). For the silkiest pudding, pour it through a fine-mesh strainer into a bowl or large measuring cup.
Portion and chill. Divide into cups. Press a small piece of plastic wrap directly on the surface of each to prevent a skin, unless you like that old-school layer.
Chill for at least 2 hours, or until set.
Serve. Top with whipped cream, berries, or a dusting of cinnamon. Enjoy straight from the cup, cool and creamy.