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.

Mug of thick homemade hot chocolate topped with marshmallows and a drizzle of chocolate syrup.

The Hot Chocolate That’s Become a Family Holiday Tradition

Jamie from Drive Me Hungry

There’s nothing better than a mug of homemade hot chocolate when it’s chilly outside, and this thick, creamy version is a favorite at my house around Christmas.

The biggest difference between this and a packet mix is the real chocolate. Good chocolate has a high percentage of cocoa and smooth-melting cocoa butter, which gives the drink its silky texture. I use two kinds, bittersweet for bold flavor and semisweet for a little more sweetness, plus a spoonful of Dutch cocoa to round it out.

The other piece is a small amount of cornstarch. It’s what makes this hot chocolate thick and creamy instead of thin like hot cocoa.

I also love giving the dry ingredients as a gift in a mason jar. My friends love it, and it’s an easy edible gift to make for the holidays.

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.

rich and creamy homemade hot chocolate in a white mug with a spoon

Ingredients for Homemade Hot Chocolate

You need eight ingredients, plus whatever toppings you like. Exact amounts are in the recipe card below.

Ingredients for homemade hot chocolate: whole milk, heavy cream, bittersweet and semisweet chocolate bars, Dutch-processed cocoa, cornstarch, vanilla, and sugar.
  • 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.

Mug of thick homemade hot chocolate topped with marshmallows and a drizzle of chocolate syrup.

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.
Homemade hot chocolate with marshmallows and cocoa powder.

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

What’s the difference between hot cocoa and hot chocolate?

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.

Why add cornstarch to hot chocolate?

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.

Why does my hot chocolate look grainy?

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.

Can I use chocolate chips?

Yes. A 4 oz bar is a little under 1 cup, so use that much chips for each bar.

Do I need Dutch-processed cocoa?

No. It gives a smoother, milder chocolate flavor, but regular cocoa powder works as well.

Can I make it ahead or keep it warm for a party?

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!

Jamie
rich and creamy homemade hot chocolate in a white mug with a spoon
5 from 301 votes
Servings: 4

Rich and Creamy Homemade Hot Chocolate

Stovetop hot chocolate made with bittersweet and semisweet chocolate, Dutch-processed cocoa, whole milk, and heavy cream, lightly thickened with cornstarch.
Prep: 5 minutes
Cook: 4 minutes
Total: 9 minutes
Save this recipe!
Get this sent to your inbox, plus get new recipes from us every week!

Ingredients 

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

Calories: 374kcal, Carbohydrates: 27g, Protein: 7g, Fat: 26g, Saturated Fat: 16g, Cholesterol: 44mg, Sodium: 73mg, Potassium: 417mg, Fiber: 3g, Sugar: 21g, Vitamin A: 541IU, Calcium: 197mg, Iron: 2mg

Nutrition information is automatically calculated, so should only be used as an approximation.

Like this? Leave a comment below!

Jamie from Drive Me Hungry

Jamie

Hi! I'm Jamie, a recipe developer, home cook for over 20 years, and third-generation baker. I come from a family of professional bakers and pastry chefs, and I've trained in a range of cuisines through culinary courses over the years. On Drive Me Hungry, you'll find quick, easy recipes that still look and taste incredible, from Asian-inspired dishes and comforting sauces to bakery-style desserts, all designed for weeknight cooking. Every recipe is developed, tested, and perfected in my kitchen before it ever reaches yours.

You May Also Like:

Leave a comment

Your email address will not be published. Required fields are marked *

Recipe Rating




50 Comments

  1. Claudia Lamascolo says:

    5 stars
    Hot chocolate is such a favorite and I never tried homemade until I saw this how easy it was. No more packages for us! Thanks it was delicious!

  2. Anjali says:

    5 stars
    This hot chocolate was so rich, creamy and delicious!! Totally warmed me up on the cooler fall evenings we’ve been having lately!

    1. Jamie says:

      That’s so great to hear!

  3. Erin says:

    5 stars
    This was AMAZING! We all flipped out over how rich and creamy it was. A new favorite for sure!

  4. Maggie says:

    5 stars
    This is as good as it looks. YUMMMM!

  5. Alex says:

    5 stars
    This was amazing! Almost like drinking pudding. 😀 Can’t wait to make it again!

  6. J says:

    5 stars
    I gave it a try with milk chocolate and it was incredible! I’ve been drinking it all week!

  7. Raquel says:

    5 stars
    Creamy and delicious – the way hot cocoa should be!

  8. Mikayla says:

    5 stars
    This is a hot chocolate made for special occasions. Extremely thick and creamy, perfect for an evening of Christmas movie viewing.

  9. Dana says:

    5 stars
    Yum! This is sooo mouthwatering! There’s nothing better than homemade hot chocolate with extra marshmallows.

  10. Neha says:

    5 stars
    My favorite rich and decadent hot chocolate recipe! And I can’t get enough of your photos, so pretty!

  11. Pam A. says:

    Jamie, after I cook it would it work to put it in a crock pot to serve. Or would it develop a skin. Want to keep it warm on Christmas morning.

    1. Jamie says:

      Hi Pam! To avoid forming a skin, I’d recommend keeping a tight lid on the crock pot and keeping it closed at all times, except for serving. Also give it a quick stir before serving. The skin forms as a result of surface evaporation and the proteins in the milk solidifying. As long as you keep the surface moist, it should help prevent a skin from forming. Hope that helps!

  12. Naiby says:

    5 stars
    I never thought of adding cornstarch, but you’re so right; it thickens the whole thing. And what a good idea to give a hot chocolate mix as a gourmet gift. I’ll add that to my list 😉

    1. Jamie says:

      Thanks Naiby! Yes, the cornstarch makes this a creamy, thick hot chocolate which is a favorite during Christmas at my house! Do give them as edible gifts, my friends love it! 🙂

  13. Jacqueline Debono says:

    5 stars
    Wow that looks and sounds like the most amazing hot chocolate ever!! Going to add the ingredients I don’t have to my shopping list and make it over the holidays!

  14. Farrukh Aziz says:

    5 stars
    It’s cold day and this is exactly what I want right now. Gorgeous photos and absolutely delicious hot chocolate, looks divine! Thanks for sharing! 🙂

  15. Cindy says:

    This was SO delicious! Adding chocolate makes a huge difference. I had 2 cups in one sitting and can’t wait to make more this week. Thanks for the great recipe and detailed instructions and photos.

    1. Jamie says:

      Thanks Cindy! I agree, it’s definitely hard to have just one cup, it tastes too good! 🙂

  16. Loreto Nardelli says:

    5 stars
    This hot chocolate reminds me so much of one I tried in Mexico. I love that you used cream and chocolate. The topping of narshmelliws and that drizzle just kicked hot chocolates for me up a cazillion notches! I could use one of these right now!

  17. Marisa F. Stewart says:

    5 stars
    I’ve been so cold lately what with our temps going from half-way warm to cold. I wanted something special so I tried your homemade hot chocolate. It looked so thick and creamy I just knew it would be good. And I wasn’t disappointed. I’m making it again this afternoon when my grandsons come over. I know they’re going to love it.

    1. Jamie says:

      Thanks Marisa! I’m so happy you liked it. There’s nothing better than thick and creamy hot chocolate on a cold day! 🙂

  18. Laura Arteaga says:

    5 stars
    This is too perfect! It looks amazingly creamy and delicious. Keeping the recipe and going to buy all the ingredients first thing in the morning!

  19. Tracy says:

    5 stars
    This is SO incredibly rich and creamy! My girls loved it SO much and will never go back to anything less!

  20. Emily Wever says:

    Do you think this recipe would work in a big hot beverage dispenser? (Like a big coffee plugged in carafe) I want to make a big batch for an outdoor event but don’t want it to get weird from holding it too long.

    1. Jamie says:

      Hi Emily! I haven’t tried doing that before so can’t say for sure but I don’t see why you couldn’t do that.

    2. Dana says:

      Am thinking of doing the same thing.. did it work for you?