The first whisk through cocoa and milk should make a dark, smooth paste, not a dusty cloud of lumps. When that little mixture turns glossy in the saucepan, the rest comes together without chasing cocoa around a full pot. This homemade hot chocolate uses both unsweetened cocoa and chopped semisweet chocolate, so it tastes rounded and chocolate-forward instead of thin or sugary. The chocolate melts into the milk while the cocoa brings a deeper note.
I keep the heat at medium and stop when the drink is steaming, not bubbling. That gives the chocolate time to melt into the milk without scorching the bottom of the pan. A final stir of vanilla after the saucepan comes off the heat leaves the aroma clear in every mug, alongside a smooth, rich cup of hot chocolate.

Kitchen Note
Take the saucepan off the heat before adding the vanilla. Stirring it in at the end keeps its warm aroma noticeable instead of letting it fade while the chocolate heats.
Save this homemade hot chocolate for a cold night when you want a smooth, chocolate-rich cup in about 10 minutes.
Why This Cup Starts With a Small Cocoa Paste, Not a Full Pan of Milk
Cocoa powder doesn’t dissolve the way sugar does. If you scatter it straight into several cups of milk, it tends to float, cling to the sides, and leave little dry pockets behind. Starting with just a small amount of milk gives the cocoa, sugar, and salt room to blend into a smooth paste before the rest of the liquid goes in.
That smooth beginning matters because the cocoa is the ingredient most likely to make the finished drink feel dusty or lumpy. Whisk the first mixture until you can’t see dry cocoa around the edges or at the bottom of the saucepan. Only then add the remaining milk and chopped chocolate. Once the pan contains more liquid, the cocoa is already dispersed, and the whisk can focus on keeping the chocolate moving as it melts. It’s a small change in order, but it makes the difference between a cup with an even, velvety texture and one with cocoa settling at the bottom.
Which Ingredients Shape the Richness of This Hot Chocolate

- Unsweetened cocoa powder — This brings a concentrated chocolate taste without adding sweetness. A fresh, everyday cocoa powder works well here; there’s no need to reach for a specialty brand. Break up any packed lumps before whisking so they don’t hide in the paste.
- Semisweet chocolate — Chopped chocolate melts into the milk and gives the drink more body than cocoa powder alone. Finely chop it so the pieces melt in the 5-to-7-minute cooking window. A good everyday semisweet bar is plenty; there’s no need for expensive baking chocolate.
- Whole milk — Whole milk gives the finished cup a fuller, creamier feel. Two-percent milk works if that’s what you keep on hand, though the drink won’t feel quite as rich. Use the same amount for both additions.
- Granulated sugar — The sugar balances unsweetened cocoa and semisweet chocolate. It dissolves easily as you whisk the first mixture, so there’s no need to use a special type of sugar.
- Vanilla extract — Vanilla rounds out the chocolate rather than making the drink taste distinctly like vanilla. A standard extract is fine; stir it in after removing the saucepan from the heat.
How to Melt the Chocolate Without Scorching the Milk
Whisk the cocoa into a smooth base
Put the cocoa powder, sugar, salt, and the first portion of milk in a 3-quart saucepan over medium heat. Whisk until the mixture looks smooth and glossy, paying attention to the bottom and the corners where cocoa can cling. If you still see dry flecks, keep whisking before adding more milk. This is the easiest point to catch and smooth out any lumps.
Warm the milk as the chocolate melts
Whisk in the remaining milk and the finely chopped semisweet chocolate. Cook over medium heat for 5 to 7 minutes, whisking often, until the chocolate has melted and the drink is steaming. The milk should be hot with wisps of steam rising from the surface, not bubbling. If you let it boil, milk can scorch on the bottom and the drink may lose its smooth texture.
Stir in vanilla off the heat
Once the chocolate has melted and the saucepan is steaming, remove it from the heat. Stir in the vanilla until it’s evenly distributed, then serve the hot chocolate while it’s warm. The drink should look uniform, with no unmelted chocolate pieces floating in the pan. If you spot a few, give the mixture another whisk before pouring.
Simple Swaps for a Different Kind of Cup
Use bittersweet chocolate for a darker cup
Replace the semisweet chocolate with the same amount of bittersweet chocolate. The cocoa flavor comes through more sharply and the cup tastes less sweet, while the melted chocolate still gives it body.
Make a dairy-free version with oat milk
Use unsweetened oat milk in place of both portions of whole milk, and choose dairy-free semisweet chocolate. The cocoa and sugar stay the same. The result is still chocolatey, though it may be a little less creamy than the whole-milk version.
Make a half batch for two
Use half of each ingredient and prepare it in a smaller saucepan, following the same order and texture cues. Because a smaller amount heats faster, watch for steam and melted chocolate rather than relying on the full cooking time.
Make-Ahead and Reheating
- Refrigerator: Store leftover hot chocolate in a covered container and refrigerate it within 2 hours. Use it within 3 days; it may thicken or separate a little as it chills.
- Freezer: Freezing isn’t a good choice for this drink. The milk and chocolate can separate when thawed, leaving a grainy texture even after whisking.
- Reheating: Warm it gently in a saucepan over low to medium-low heat, whisking until steaming. Don’t let it boil, which can scorch the milk and make the texture less smooth.
Questions That Come Up When Making Homemade Hot Chocolate

Homemade Hot Chocolate
Ingredients
Equipment
Method
- In a 3-quart saucepan, whisk the cocoa powder, sugar, salt, and 1/2 cup milk over medium heat until smooth.
- Whisk in the remaining 3 1/2 cups milk and the chocolate; cook over medium heat, whisking often, until steaming and the chocolate is melted, 5 to 7 minutes, without letting it boil.
- Remove the saucepan from the heat and stir in the vanilla extract before serving.





