This post may contain affiliate links
Add Bake with Zoha as a preferred source on Google and find more of my tried-and-tested recipes.
This is my unbelievably easy chocolate fudge frosting. It’s made in a saucepan instead of a mixer, with only 4 basic ingredients: butter, cocoa powder, powdered sugar and milk. It doesn’t have a single piece of melted chocolate in it – yet it is unbelievably rich, fudgy and chocolatey. And, best of all – it’s not sickly sweet like many frostings can be. You cook it into a thick sauce, then let it chill and it sets up into a silky frosting that can be used on cakes, brownies or other desserts.

It’s chocolatey, not sugary
This recipe is inspired by a chocolate icing I learned growing up in Pakistan. We didn’t have access to good quality chocolate there, so we used these basic ingredients to whip up a chocolate icing and slathered it onto brownies. But, of course, I’ve given it a grown up glow up. Here’s what makes it so good:
- No melted chocolate. All the chocolatey depth comes from good quality cocoa powder, which makes this frosting much cheaper than anything ganache-based
- Bloomed cocoa powder. Cooking the ingredients into a thick sauce blooms the cocoa powder, enhancing its chocolatey notes
- Way less sugar. Most frostings and icings have a lot more sugar than this one. I use much less, resulting in a less sweet, more chocolatey frosting
- No mixer needed. You don’t need to whip anything. Just cook down the ingredients into a thick sauce, cover, and cool. It sets into a beautiful, glossy, spreadable frosting
Step by step photos






Let the frosting chill in the fridge until it sets into a spreadable consistency.
How to use it
Because this chocolate fudge frosting sits somewhere in between an icing and a proper buttercream, it isn’t firm enough to hold rosettes or sharp edges. Therefore, I don’t recommend piping with it. Instead, use it as a cake filling or frosting – just like I do in my chocolate fudge cake – or spread it on top of brownies. You can also use it more like an icing – for example, pour it onto my Texas sheet cake and then let it set.
If you want to make a version of this frosting that *is* pipeable, you can add some chocolate to it! Add 150g of dark or semi-sweet chocolate (chopped or chips) into the frosting after you’ve cooked it, while it’s still hot. Wait 5 minutes, then stir so the chocolate melts and mixes in. Then pour the icing, cover it, and let it set at room temperature until it’s firm.
Alternatively, just make the dark chocolate fudge frosting from my Matilda chocolate cake, which uses a ton of dark chocolate in it!

Good quality cocoa powder is key
The cocoa powder is doing all the heavy lifting when it comes to the flavor of this frosting, so using a good one will make a difference. I recommend this Dutch processed cocoa powder for the best results, but you can also use a 100% natural, unsweetened cocoa powder that you like.
Email This Recipe
Enter your email and I’ll send this directly to you. Plus you’ll get new recipes from me every week!
Ingredients
- 3 cups unsalted butter (6 sticks or 675g)
- 1 1/2 cups whole milk (360g)
- 3 cups powdered sugar (360g)
- 1 cup cocoa powder (100g), preferably Dutch processed
- 1 tsp instant coffee (optional, but recommended)
- ½ tsp salt (optional, but recommended)
Instructions
- Add all the ingredients to a large saucepan (or deep frying pan) and place on the stove on medium to medium low heat.
- Cook, stirring occasionally, until the butter has melted. The mixture might look funny and lumpy at first, but keep stirring and cooking and it will turn into a smooth chocolatey sauce. You can taste it at this stage and add more sugar or cocoa powder if desired
- Keep cooking and stirring until the mixture comes to a boil. It will start to bubble up, then become frothy all over and rise in volume. At this stage, it will start to thicken up
- After a few more minutes of stirring and cooking, the mixture will stop bubbling and turn into a thick, glossy chocolate sauce. The consistency should be similar to a thick chocolate syrup (like Hershey’s). This will take around 10-15 minutes of total cooking
- Once done, pour the frosting into a wide dish such as a 9×13 pan. It will still be quite runny, don’t worry. Press cling wrap directly onto the surface of the frosting (otherwise, it will form a skin which will then create lumps in the frosting)
- Refrigerate for about 1-2 hours, or until the frosting becomes firm and spreadable. Now use it however you want!
Video Tutorial
Notes
- Texture: This frosting is in between an icing and a buttercream, so it is very spreadable, but not firm enough for piping. For a pipeable consistency, you can stir in 150g or dark of semi-sweet chocolate into the hot frosting after it cooks. Wait 5 minutes, then stir into a smooth sauce. Pour into a pan, cover, and rest at room temperature until it is set.
- Temperature: You can use the temperature of this frosting to your advantage. If it feels too firm to work with, leave it at room temperature for 15 to 20 minutes. If it feels too runny, back into the fridge. I generally find it easiest to use when it is well chilled
- Storage: You can keep the frosting in an airtight container in the fridge for up to 5 days.

Comments
Grace Amato
could u use almond milk instead of milk in the frosting?
Zoha Malik
Hi Grace! I think almond milk has lower fat, so I can’t recommend it with confidence
Asma Amer
Its a genius recipe, and can be used in so many variations. Yes its so versatile. Thanks for a wonderful addition to a list of outstanding recipes.
Zoha Malik
Thank you so much, I am so happy you like this frosting!
Meravil Cantojos
Thank you for this recipe
Godbless