Heat 1 tablespoon ghee in a heavy, thick bottomed pan (preferably non stick, cast iron or iron) over medium heat
Add chopped cashew and almonds and toast over low medium heat till lightly browned. Transfer nuts to a small bowl and keep aside.
Add the remaining ghee to the pan. Let melt over low medium heat.
Next, add the ½ cup of besan to the melted ghee. Mix well and roast it on low to medium flame while stirring continuously to avoid lumps and to ensure even roasting.
Roast until the besan turns pinkish brown or golden brown. You will smell a wonderful nutty aroma. This process of roasting besan in ghee can take around 10-15 minutes.
Once the besan is golden & you smell a nice aroma, reduce the heat to low and with one hand, add the water & hot milk mixture to the roasted flour while stirring continuously with the other hand. You will have to to work fast and be careful since the mixture may splutter.
The besan will absorb the liquid within minutes and will be thickish and dull brown in color. Add the sugar now.
As the sugar melts the besan will again become slightly loose. After you have added sugar, bhuno the halwa on low heat with continuous stirring until the halwa reaches a smooth texture and starts leaving the sides of the pan and clumping around the stirring spoon. You will also see that the color of halwa becomes deeper. Takes about 6-8 minutes. This is important coz, if you dont bhuno the halwa after adding sugar, it will become sticky.
Add a few pinches of green cardamom powder and optionally you may add 1 tablespoon of ghee for a glistening finished look.
Remove the pan from heat and dish out the halwa into serving bowls.
Garnish with the nuts that we toasted earlier. Serve besan halwa warm.