On a gas stove, place a deep medium-sized saucepan on medium heat, add sugar, water, rose essence (if using) and cardamom powder (if using) and bring this mixture to a boil.
Reduce heat to medium-low and continue to cook until one string consistency is achieved (please see tips above). Reduce heat to a simmer.
Make balls from the dough
Meanwhile, combine milk powder, all-purpose flour, ghee, yogurt, and baking soda to make a soft dough.
Let it rest for 5 minutes and then make balls of the desired size while ensuring that the balls do not have any cracks or creases.[Note: The balls double in size when added to the sugar syrup]
Deep frying the balls
Heat oil in a deep dish pan on medium heat. (Note: This oil will be used for deep frying the Gulab Jamuns so make sure you are using enough oil to completely immerse the Gulab Jamuns).
Reduce the heat to medium-low and add one gulab jamun to the oil and if it slowly rises to the surface, then your oil is ready. If the Gulab jamun rises too fast, then your oil is too hot, so reduce the heat before you proceed(see tips again..).
Once you think you have achieved the right temperature of the oil, add 5-6 Gulab jamuns to the oil.
Continuously stir them using a slotted spoon till they achieve a consistent golden brown color (Note: they will darken further once drained). Drain them on a paper towel.
Bring the sugar syrup to boil again and then take it off heat and set it aside. Add the drained Gulab Jamuns to the syrup.
Cover and let the Gulab Jamuns absorb the syrup for 1.5 - 2 hours till they have doubled in size and have soaked up the sugar syrup.
Serve warm or cold as per your preference.
I have included the nutritional info for Gulab Jamun from Nutritionix as an example and I can't vouch for its accuracy since I am not a nutritionist or dietician. For a home cook, it is difficult to calculate the nutritional info for deep-fried foods.The three things that you need to take care of to get the 'soft melt in your mouth' Gulab Jamuns are
Dough softness - To get soft Gulab Jamuns, the dough needs to be really soft. Using a little ghee or clarified butter (as needed) during the kneading process, helps achieve that. Also, when you make the balls make sure there are no cracks or else they will disintegrate when you add them to the sugar syrup.
Oil temperature - The oil needs to be kept at medium-low. If the oil is too hot, then the outer layer will cook faster leaving behind an uncooked center. When you drop the balls in the oil, it should slowly rise to the surface. If it rises quickly, that means the oil is too hot and if it doesn't rise at all and stays at the bottom, you need to increase the heat.
One string consistency - The sugar syrup needs patience and time. Stir every couple of minutes for the first ten minutes and then put a drop of the sugar syrup on a plate. Place it between your thumb and index finger and when you pull them apart a single string is formed. Took me around 20 minutes to get to this stage.