As an Amazon Associate I earn from qualifying purchases. This post may contain affiliate links.
Two kinds of dark chocolate, a spoonful of Dutch cocoa, and a little vanilla turn whole milk and cream into a thick, silky mug of hot chocolate in under 10 minutes.

RECIPE AT A GLANCE
What it is: A thick, rich stovetop hot chocolate made with real dark chocolate (bittersweet and semisweet), Dutch-processed cocoa, whole milk, and heavy cream.
Why it works: Real chocolate brings cocoa butter, making it richer and creamier than cocoa powder alone. Dutch cocoa adds a smooth, mellow chocolate flavor. A little cornstarch gives it a silky body, and melting the chocolate off the heat keeps it from turning grainy.
Time: About 9 minutes (5 minutes prep, 4 minutes cook).
Make-ahead and storage: Make it up to a day ahead, and refrigerate in an airtight container with plastic wrap pressed on the surface. Reheat gently on the stove over low heat, stirring constantly, and don’t let it boil. For parties, keep it warm in a slow cooker on the warm setting with the lid on.
Serve with: Marshmallows, chocolate whipped cream, and chocolate syrup on top, and something to dunk, like giant flourless chocolate cookies or Christmas butter cookies.
Easy swaps: Chocolate chips work in place of bars (about 1 cup per 4 oz bar). Half-and-half makes a thinner version than heavy cream. Natural cocoa works if you don’t have Dutch-processed. Using milk or white chocolate? Skip the sugar and taste first.
Want more flavor or heat? Add a pinch of cinnamon, nutmeg, instant espresso powder, or cayenne while the milk heats.

Table of Contents
- The Hot Chocolate That’s Become a Family Holiday Tradition
- RECIPE AT A GLANCE
- Ingredients for Homemade Hot Chocolate
- How to Make Homemade Hot Chocolate
- Homemade Hot Chocolate Toppings and Flavorings
- Tips for the Best Homemade Hot Chocolate
- Storage and Reheating
- Variations and Substitutions
- Hot Chocolate Mix as a Gift
- Frequently Asked Questions
- Rich and Creamy Homemade Hot Chocolate Recipe
Ingredients for Homemade Hot Chocolate
You need eight ingredients, plus whatever toppings you like. Exact amounts are in the recipe card below.

- Bittersweet chocolate: Higher percentage of cocoa and less sweet than semisweet, with a bold chocolate flavor.
- Semisweet chocolate: A moderate percentage of cocoa. It’s sweeter than bittersweet but less sweet than milk chocolate. I use one 4 oz bar of each, chopped into small pieces so they melt quickly.
- Dutch-processed cocoa powder: Natural cocoa tastes slightly tart and acidic because cocoa beans are. Dutch-processed cocoa is alkalized to remove that acidity, so it gives a smoother finish and a milder chocolate flavor.
- Whole milk: The base of the hot chocolate.
- Heavy cream: Makes it rich and creamy.
- Cornstarch: A thickener that gives the hot chocolate its silky texture. Leave it out for a thinner drink.
- Vanilla extract: Added off the heat with the chocolate.
- Sugar (optional): Add to taste at the end. You may not need it.
How to Make Homemade Hot Chocolate
1. Chop the chocolate. Chop both bars into small pieces. The smaller they are, the faster and more evenly they melt.
2. Whisk the milk and cornstarch. In a bowl, whisk the cornstarch into the milk until smooth and lump-free.
3. Combine everything in the pot. Pour the milk mixture into a medium saucepan, then add the heavy cream, Dutch cocoa, and any optional spices. Heat over medium-low, stirring constantly so a skin doesn’t form on top.



4. Heat until steaming, then pull it off. When you see steam rising and small bubbles forming at the edge of the pot, take it off the heat. Don’t let it boil, which can curdle the milk and make it grainy.
5. Melt in the chocolate and vanilla. Add the chopped chocolate and vanilla and stir constantly. It will look grainy at first, then turn smooth and silky in about a minute as the chocolate melts.



6. Taste and sweeten. Taste, then stir in sugar if you want it sweeter. You may not need any.
7. Serve right away. Pour into mugs and add your toppings.

Homemade Hot Chocolate Toppings and Flavorings
Toppings: Marshmallows, whipped cream or chocolate whipped cream, chocolate syrup, salted caramel syrup, or crushed peppermint candy.
Spices: Add a pinch of cinnamon, nutmeg, or cayenne while the milk heats.
Flavorings: Peppermint extract, extra vanilla, or a pinch of instant espresso powder.


Jamie’s Tip
Tips for the Best Homemade Hot Chocolate
- Chop the chocolate small. Smaller pieces melt faster into the hot milk.
- Take the pot off the heat before adding the chocolate. Once you see steam and small bubbles at the edge of the pot, it’s ready. Letting it boil can curdle the milk and make the hot chocolate grainy.
- Grainy at first is normal. Right after the chocolate goes in, it looks grainy. Keep stirring and it turns smooth and silky in about a minute.
- Cornstarch is the texture difference. With it, the hot chocolate is thick and creamy. Without it, it’s thinner.
- Sugar is optional. Between the two chocolates, you may not need any. Taste before adding.
- Stir constantly while heating and reheating. It keeps a skin from forming, and a skin adds graininess.
Storage and Reheating
Make ahead: You can make this hot chocolate a day in advance. Store it in an airtight container in the fridge, with a layer of plastic wrap pressed onto the surface to keep a skin from forming.
Reheat: Warm it on the stovetop over low heat, stirring constantly until it’s heated through. Stirring keeps a skin from forming, which would make it grainy. Don’t let it boil, or the milk can curdle.
Keep it warm for a crowd: A slow cooker works well. Keep it on the warm setting with the lid on tight, and only open it to serve. Give it a quick stir before and after serving. The skin forms from surface evaporation and the milk proteins setting, so keeping the surface covered helps prevent it.
Variations and Substitutions
- Chocolate chips instead of bars: A 4 oz bar is a little under 1 cup, so use that same amount of chips.
- Milk or white chocolate: These have more sugar than dark chocolate, so reduce or skip the sugar. Taste first, since you can always add more.
- Natural cocoa instead of Dutch: Regular cocoa powder works too. The flavor will be a little sharper and less mellow.
- Lighter version: Swap the heavy cream for half and half for a thinner hot chocolate.
- Thinner, hot cocoa style: Leave out the cornstarch.
- Other milks: Use any milk in place of whole milk.

Hot Chocolate Mix as a Gift
Add the dry ingredients in a mason jar and make this an edible gift during the holidays or as part of a care package during the colder months. This makes a fantastic gift for anyone feeling under the weather and is a warm, comforting drink to have when it’s chilly out. They also make amazing parting gifts to hand out at a Christmas party.
I suggest adding the dry ingredients one by one so you can see the individual layers and adding a card with the recipe for how much milk, cream, and vanilla to add.
Frequently Asked Questions
Hot chocolate is made with real chocolate, and sometimes cocoa powder too. Hot cocoa is usually made with cocoa powder alone. The cocoa butter in real chocolate adds fat, which makes hot chocolate richer and creamier, while hot cocoa is thinner.
Cornstarch thickens it and gives it a silky, smooth texture. If you like your hot chocolate thick and creamy, don’t skip it. Without it, the hot chocolate is thinner.
Right after you add the chocolate, it will look grainy. Keep stirring and it turns smooth in about a minute. If it stays grainy, it was probably too hot: boiling can curdle the milk, and a skin that forms while heating or reheating also adds graininess. Stir constantly and keep it off a boil.
Yes. A 4 oz bar is a little under 1 cup, so use that much chips for each bar.
No. It gives a smoother, milder chocolate flavor, but regular cocoa powder works as well.
Yes. Make it up to a day ahead and refrigerate it with plastic wrap on the surface, then reheat gently on the stove. To hold it warm, use a slow cooker on the warm setting with the lid closed, and stir it before and after serving.
Once you’ve made hot chocolate with real chocolate, it’s hard to go back to the packets. Pour a mug, pile on the toppings, and pair it with a slice of Bûche de Noël, a warm custard bread pudding with vanilla sauce, or a plate of perfect baked cinnamon apples.
Looking for something other than chocolate? Try my Vietnamese coffee, homemade Korean strawberry milk, or Korean banana milk, or browse all of my drink recipes.
If you make this, let me know how you topped yours in the comments, and leave a rating to help other readers find it.
Thanks so much for stopping by!

Rich and Creamy Homemade Hot Chocolate
Ingredients
- 3 ½ cups whole milk
- ½ cup heavy cream
- 4 oz bittersweet chocolate bar, chopped, slightly under 1 cup
- 4 oz semisweet chocolate bar, chopped, slightly under 1 cup
- 2 Tablespoons dutch processed cocoa powder*
- 2 teaspoons cornstarch
- 1 teaspoon vanilla extract
- 1 Tablespoon sugar, optional, depending on taste
Toppings:
- marshmallows
- whipped cream
- chocolate syrup
Optional Spices:
- pinch of cinnamon
- pinch of instant espresso powder
- pinch of nutmeg
- pinch of cayenne pepper
Instructions
- In a bowl, whisk the cornstarch into the milk until there are no lumps.
- Pour the milk mixture into a medium saucepan and add the heavy cream, cocoa powder, and any optional spices. Heat over medium-low, stirring constantly so a skin doesn't form on top.
- When you see steam rising and small bubbles forming around the edge of the pot, remove it from the heat. Don't let it boil, or the milk can curdle and the hot chocolate will turn grainy.
- Add the chopped chocolate and vanilla and stir constantly until the chocolate melts completely. It will look grainy at first, then turn smooth and silky.
- Add sugar to taste. You may not need additional sugar.
- Serve immediately with your favorite toppings.
Notes
- Chocolate chips: A 4 oz bar is a little under 1 cup, so substitute the same amount of chocolate chips.
- Milk or white chocolate: These have more sugar than dark chocolate, so reduce or omit the sugar and add to taste.
- Cocoa powder: Dutch-processed cocoa is alkalized to remove natural cocoa’s acidity, which gives a smoother finish and milder flavor. Regular cocoa powder works too.
- Thickness: For a thinner hot chocolate, use half and half instead of heavy cream, or leave out the cornstarch.
- Make ahead: Make up to 1 day ahead. Store in an airtight container in the fridge with plastic wrap pressed onto the surface to prevent a skin.
- Reheating: Warm on the stovetop over low heat, stirring constantly, until heated through. Don’t let it boil, or the milk can curdle.
- Slow cooker: Keep on the warm setting with the lid on tight, opening it only to serve. Stir before and after serving. Never let it boil.
Nutrition
Nutrition information is automatically calculated, so should only be used as an approximation.
Like this? Leave a comment below!







Three different kinds of chocolate makes this divine! Seriously the best hot chocolate.