For sugar syrup
Let’s first make the syrup (this is called “raush” in Bengali). In a large pan take the water, add the sugar, and turn on the heat to boil. As soon as the sugar dissolves turn off the heat and set the syrup aside.
Now make the chhana (soft paneer) with the milk and vinegar.
In a large plate take the soft paneer and knead it with your palm — keep your palm parallel to the plate and mash the paneer for 5-7 minutes using forward strokes until it becomes very smooth and soft. Take the seeds out from the black cardamom. Add the remaining dry ingredients: milk powder, flour, semolina, baking powder, black cardamom seeds, and the ghee to the paneer. Mix it well for another 5-6 minutes. You might find the mixture to be very sticky after this step but don’t worry, just let it rest for 10 minutes. Now divide the mixture / dough into slightly-smaller-than-lime-sized balls; you will get around 18-20 balls from this dough. With the help of your two palms, make the balls very smooth. Make sure there are no cracks in the balls.
For frying, take a heavy bottom pan (wok is the best choice) and heat the oil at low. It should not be very hot; here’s how you can check if the oil is ready: take a tiny pea sized portion from the dough and drop it in the oil. Very small oil bubbles should appear around the dough. Now drop small batches of the gulab jamun balls into the oil. Do not fry them all at a time. First the balls will stick to the bottom of the pan — use a spatula to gently release them. One you do that, they will float. Do not touch them, only stir the oil from time to time. It will take 12-15 minutes to fry because you will fry them in a very low heat. You can fry them to your desired color — brown to dark brown. Now add the fried balls in to the sugar syrup. Let them soak for 4-5 hours.
Your Gulab Jamuns (“Pantua” in Bengali) are ready! Enjoy!