There is hot chocolate from a packet, and then there is this: milk warmed on the stove with real chopped chocolate melted into it, a spoonful of cocoa to deepen the flavor, and a cloud of whipped cream on top that slowly melts at the edges. The difference is not subtle. One tastes like sweet brown water; the other tastes like a chocolate bar you can drink.
The method matters as much as the ingredients. Melting the chocolate into a small amount of hot milk first — making a kind of loose ganache — means it blends smoothly instead of floating in stubborn flecks. A pinch of salt, which nobody will ever identify, makes the chocolate taste more like itself. And heating gently, without ever letting the pot boil, keeps the milk sweet and the texture silky instead of scalded and thin.
This is the cup I make on the first genuinely cold night of the year, and the one requested after sledding, tree-trimming, and every snow day in between. If you are a fellow chocolate devotee, my Dark Chocolate Mousse is this same love in dessert form.

Why This Recipe Is Worth the Stovetop
- Real chocolate, not just cocoa. Chopped bar chocolate brings cocoa butter, and cocoa butter is what makes hot chocolate taste rich instead of dusty.
- Two chocolates, two jobs. The cocoa powder adds intense, dark backbone; the melted chocolate adds body and a rounded sweetness. Together they taste complete.
- Thick but drinkable. A teaspoon of cornstarch is offered as an option for café-style thickness, but the base recipe is already lush from the chocolate itself.
- Homemade whipped cream. It takes two minutes, holds its shape on the hot surface, and melts into the drink as you sip. Canned topping is not the same experience.
Ingredients
For the Hot Chocolate
- 4 cups whole milk, divided
- 4 ounces bittersweet or semisweet chocolate (60 to 70%), finely chopped
- 2 tablespoons unsweetened cocoa powder
- 3 tablespoons granulated sugar, plus more to taste
- 1/4 teaspoon fine salt
- 1 teaspoon vanilla extract
- 1 teaspoon cornstarch mixed with 1 tablespoon cold milk (optional, for a thicker cup)
For the Whipped Cream
- 1 cup heavy cream, very cold
- 1 tablespoon powdered sugar
- 1/2 teaspoon vanilla extract
To Serve
- Shaved chocolate, cocoa powder, or mini marshmallows
Use chocolate you would happily eat on its own — a bar, not baking chips, which contain stabilizers that resist melting smoothly. Whole milk gives the fullest result; 2% works but the cup will be noticeably thinner. For a dairy-free version, oat milk is the best substitute and behaves almost identically.

Instructions
- Start the whipped cream. In a chilled bowl, beat the cold heavy cream with the powdered sugar and vanilla until soft peaks form — the cream should hold a peak that flops gently at the tip. Refrigerate while you make the hot chocolate. Soft peaks matter: overwhipped cream sits in a stiff lump instead of melting in.
- Warm most of the milk. Pour 3 1/2 cups of the milk into a medium saucepan and set it over medium heat. Warm it until it is steaming and small bubbles form around the edges, about 160 to 170°F — do not let it boil.
- Make the chocolate base. In a small bowl, whisk the cocoa powder, sugar, salt, and the remaining 1/2 cup cold milk into a smooth slurry. Whisk this into the hot milk, then add the chopped chocolate. Reduce the heat to low.
- Melt and whisk. Cook, whisking constantly and scraping the corners of the pot, for 3 to 5 minutes, until the chocolate is fully melted and the mixture is smooth, steaming, and slightly thickened. Keep it below a simmer — if it starts to bubble, lift the pot off the heat for a few seconds.
- Thicken if you like. For a thicker, European-style cup, whisk in the cornstarch slurry and cook one minute more, until the hot chocolate lightly coats the back of a spoon. Skip this for a classic American-style cup.
- Finish off the heat. Remove the pot from the heat and stir in the vanilla. Taste and adjust the sugar — chocolate varies in sweetness, and your taste is the final authority.
- Serve immediately. Ladle into warm mugs (a quick rinse with hot water keeps the drink hot longer). Spoon a generous mound of whipped cream over each, and finish with shaved chocolate, a dusting of cocoa, or marshmallows.

Tips for Success
- Never boil it. Boiled milk can scald, separate slightly, and develop a skin, and boiled chocolate can turn grainy. Gentle heat and constant whisking are the whole technique.
- Chop the chocolate fine. Small pieces melt quickly and evenly. Big chunks sink, sit on the hot bottom of the pot, and can catch before they melt.
- Whisk like you mean it. A whisk, moved constantly, builds the smooth, faintly frothy texture that makes this feel like a café drink. A final 10-second blitz with an immersion blender makes it extra silky.
- Sweeten at the end. The perceived sweetness changes as the drink cools slightly, and brands of chocolate differ. Start with the recipe amount and add the last teaspoon after tasting.
Variations
- Mexican hot chocolate: Add 1/2 teaspoon cinnamon and a pinch of cayenne or chipotle powder with the cocoa, and finish with a cinnamon stick for stirring. Serving it alongside my Chai Snickerdoodles doubles down on the warm spice theme.
- Peppermint: Stir in 1/4 teaspoon peppermint extract with the vanilla and top with crushed candy cane.
- Mocha: Replace 1 cup of the milk with strong brewed coffee or add 2 teaspoons of instant espresso powder to the cocoa slurry.
- Orange chocolate: Add two wide strips of orange peel to the warming milk and remove them before serving; add 1/4 teaspoon orange zest at the end if you want a stronger note.
Storage and Make-Ahead
Leftover hot chocolate keeps in the refrigerator for up to 3 days. It will thicken as it chills — that is the cocoa butter setting up, and it is normal. Reheat it gently in a saucepan over low heat, whisking, until steaming; thin with a splash of milk if needed. Avoid the microwave if you can, since it heats unevenly and can scorch the bottom.
For a party, the whole batch holds beautifully in a slow cooker on the warm setting for up to 2 hours, whisked occasionally, with the whipped cream in a bowl alongside. Double the recipe for a crowd — it scales exactly. The whipped cream itself is best made fresh, but it will hold, covered, in the fridge for several hours; give it a few whisk strokes to refresh it before serving.
Frequently Asked Questions
Can I use chocolate chips instead of a bar?
You can, and the result is still good, but chips contain stabilizers that keep them from melting completely smooth. If chips are what you have, warm them a little longer and whisk vigorously, or blitz briefly with an immersion blender.
Why did my hot chocolate come out grainy?
Usually the heat got too high or the chocolate went into cold milk and seized into flecks. The slurry method in this recipe — cocoa and a little milk first, then into hot milk — prevents most graininess.
Can I make it with water instead of milk?
You can make a drinkable cup, especially with the cornstarch trick, but it will taste thin next to the milk version. A half-milk, half-water compromise lightens it while keeping decent body.
What is the best chocolate percentage?
Between 60 and 70% cacao hits the sweet spot: dark and intense without bitterness. Milk chocolate makes a much sweeter, milder cup that kids tend to prefer — reduce the sugar to 1 tablespoon if you use it.
Recipe Card
Prep Time: 5 minutes
Cook Time: 10 minutes
Total Time: 15 minutes
Servings: 4 mugs
Ingredients (summary): 4 cups whole milk; 4 oz bittersweet chocolate, chopped; 2 Tbsp cocoa powder; 3 Tbsp sugar; salt; 1 tsp vanilla. Whipped cream: 1 cup heavy cream, 1 Tbsp powdered sugar, 1/2 tsp vanilla.
Instructions (summary): Whip the cream to soft peaks and chill. Warm 3 1/2 cups milk to steaming. Whisk cocoa, sugar, salt, and remaining milk into a slurry; whisk into the hot milk with the chopped chocolate. Cook on low, whisking, until smooth and steaming. Add vanilla, pour into mugs, and top with whipped cream.











