Prepare the Pan and Ingredients: Before you begin cooking, butter a glass pie pan or an 8×8-inch dish and set aside. Slice the butter into thin pieces so it melts quickly later, and measure the peanut butter in advance. Make a small divot in the peanut butter and pour the vanilla into it so both are ready to add together when the fudge comes off the heat.
Combine the Dry Ingredients: In a large, heavy 4-quart saucepan, whisk together the sugar, cocoa powder, and salt until evenly mixed. This prevents clumps and ensures the cocoa flavor is smooth throughout the fudge.
Add the Milk: Pour in the milk and stir until well combined. Place the pan over medium heat (around 5 on a gas stove) and cook, stirring constantly, until the mixture begins to boil. This usually takes about 10 minutes.
Boil Without Stirring: Once it starts to boil, stop stirring and reduce the heat slightly (to about medium-low or “4”). Let the mixture boil undisturbed until it reaches 234°F on a candy thermometer — the “soft ball” stage. This typically takes around 13 minutes. If you don’t have a thermometer, you can test it the old-fashioned way: drop a small spoonful into a bowl of cold water — if it forms a soft ball when rolled between your fingers, it’s ready.
Add Flavor and Cool: Remove the pan from heat immediately. Add the butter, peanut butter, and vanilla all at once. Don’t stir yet — let them sit for a minute or two to cool slightly. Traditional fudge-making calls for cooling the mixture to 110°F, but many home cooks skip the thermometer and rely on feel — once the surface starts to lose its glossy shine, it’s ready to beat.
Beat the Fudge: Using a sturdy wooden spoon, beat the mixture briskly by hand. As you stir, the fudge will begin to thicken, lose its gloss, and form soft “ripples” across the surface. This is when the texture turns silky and smooth. It may take 5–10 minutes of steady stirring — patience is key here!
Pour and Set: As soon as the fudge starts to ripple and hold its shape, pour it quickly into the buttered pie pan. Spread evenly if needed, but don’t overwork it — it will start setting fast. Let it cool at room temperature until firm, then slice into squares or wedges.