In a mixing bowl, combine whole milk powder, all-purpose flour, and baking powder. Mix well to ensure the dry ingredients are evenly mixed and incorporated.
Add the ghee and mix until the mixture resembles coarse crumbs.
Gradually add whole milk, kneading gently until a soft and smooth dough forms. Be careful not to over-knead, as this can make the gulab jamun dense.
Cover the dough with a damp cloth so it doesn't dry out as you're shaping the balls.
After the dough has rested, divide it into small, equal portions (I made 15).
Roll each portion between your palms to form smooth, crack-free balls. If the dough cracks, add a few drops of milk to your palms and knead lightly again using the heel of your palm.
Place the rolled balls on a plate and cover them with plastic wrap to prevent drying.
Heat neutral oil in a deep frying pan over medium heat. The oil should be hot but not smoking (about 325°F or 160°C if you have a thermometer).
To test the temperature, drop a small piece of dough into the oil; it should rise to the surface slowly without browning too quickly.
Gently slide the dough balls into the oil, a few at a time, ensuring not to overcrowd the pan.
Once lightly yellowed, turn down the heat to medium-low. This is a crucial step.
Fry the balls, stirring occasionally for even browning, until they turn golden-brown. This process should take 6–8 minutes per batch.
Remove the fried gulab jamun using a slotted spoon and place them into the hot sugar syrup immediately.
While the gulab jamun are hot and fresh out of the oil, transfer them to the prepared and hot sugar syrup. The sugar syrup must be hot for them to absorb the syrup and come soft and fluffy.
Let them soak for at least 3-4 hours, ensuring they absorb the syrup and become soft and spongy.
Serve. Gulab jamun can be served warm, at room temperature, or chilled. Garnish with slivers of pistachios or almonds for an added touch pizzaz