Prep the pan: Line an 8-inch square baking pan with parchment, leaving overhang for easy lifting. Lightly butter the parchment.
Measure everything first: Fudge moves quickly once it reaches temperature.
Measure your ingredients and keep a wooden spoon, candy thermometer, and a small bowl of cold water nearby.
Combine ingredients: In a heavy-bottomed medium saucepan, add 2 cups granulated sugar, 4 tablespoons unsalted butter, 1/2 cup heavy cream, 1/2 cup whole milk, and a pinch (1/8 teaspoon) of fine sea salt. Stir to combine.
Heat gently: Place over medium heat. Stir slowly and constantly until the sugar dissolves and the mixture looks smooth and homogenous.
Avoid letting sugar crystals stick to the sides of the pan.
Attach the thermometer: Clip a candy thermometer to the side of the pan, making sure the tip is submerged but not touching the bottom.
Bring to a boil (no stirring): Once the mixture begins to bubble, reduce to a gentle, steady boil. Stop stirring. Let it cook undisturbed until it reaches 238°F (114°C), the soft-ball stage. This typically takes 8–12 minutes. If crystals form on the sides, you can carefully brush them down with a wet pastry brush.
Check without a thermometer (optional): If you don’t have a thermometer, drop a little syrup into the cold water.
It should form a soft, pliable ball that flattens when pressed.
Remove from heat: Take the pan off the burner. Add 2–3 teaspoons pure vanilla extract (or 2 teaspoons extract plus 1 teaspoon vanilla bean paste). Do not stir yet.
Cool undisturbed: Let the mixture sit without stirring until the temperature drops to about 110°F (43°C) or the pan feels just warm to the touch on the bottom—about 10–15 minutes.
This resting period is key for a fine, smooth texture.
Beat to set the texture: Using a wooden spoon or a sturdy silicone spatula, beat the mixture steadily until it thickens, loses its glossy sheen, and starts to hold soft ridges—about 4–8 minutes. The color will lighten slightly.
Pour and smooth: Immediately scrape the fudge into the prepared pan. Smooth the top with an offset spatula or the back of a spoon.
Work quickly; it sets fast at this stage.
Let it set: Allow the fudge to cool at room temperature until firm, 2–3 hours. Avoid the fridge at this stage, which can cause surface moisture and uneven texture.
Cut and serve: Lift the fudge out using the parchment overhang. Cut into 1-inch squares with a sharp knife.
For clean edges, warm the knife briefly under hot water and wipe dry between cuts.