½cupgheeabout 100 g; see notes for a lighter option
1cupbesan / gram flour120 g; sifted if lumpy
1cupwhole milk
½cupwater
½cupgranulated sugar100 g; adjust to taste
½tspground cardamom
Pinch of salt (optional, balances sweetness)
For garnish
2tbspslivered almonds and pistachios
Extra ghee, a few drops on top (optional)
Get Recipe Ingredients
Instructions
Warm the liquid
In a small saucepan, combine milk and water. Heat on medium until steaming and small bubbles form at the edges. Do not let it boil over. Turn off heat and keep near the stove.
Roast the besan
Place a heavy-bottomed pan or kadai on medium-low heat. Add ghee and let it melt completely.
Add besan. Stir with a spatula until the flour is coated in ghee and looks like wet sand.
Reduce heat to low. Stir continuously for 14 to 18 minutes until the mixture deepens from pale yellow to rich golden brown, like peanut butter or caramel.
Stop when you smell a clear nutty aroma and the besan no longer smells raw.
Add liquid and sweeten
With one hand, pour the warm milk mixture into the roasted besan in a thin, steady stream. With the other hand, whisk or stir vigorously through the sputtering bubbles.
Within a minute the halwa should look smooth and porridge-like. Break any small lumps against the side of the pan.
Add sugar and salt if using. Stir well. Cook on low heat, stirring often, for 5 to 7 minutes until the halwa pulls away from the pan sides and a thin film of ghee shimmers on the surface.
Finish and serve
Turn off heat. Mix in cardamom powder and most of the nuts, reserving a pinch for topping.
Serve warm in small bowls. Add a few drops of ghee on top if you like that classic halwa sheen.
Notes
Use a heavy-bottom pan or thick kadai. Thin pans scorch besan before the edges catch up.Under-roasted besan is the main reason halwa tastes raw. Wait for deep golden color and a nutty aroma before adding liquid.If lumps appear, press them against the pan wall or whisk on low heat for one minute. A splash of hot water can loosen an over-thick batch.You can use ⅓ cup ghee if you roast very thoroughly on low heat. Do not skip ghee entirely or you lose the signature richness.Replace sugar with ⅔ cup grated jaggery dissolved in the warm milk-water before pouring into the besan.Refrigerate in an airtight container up to 3 days. Reheat gently on the stove with a splash of milk until glossy again. Best eaten warm.