For the Syrup:
- 2 cups (480ml) water
- 14 ounces (2 cups; 400g) sugar
- 1 tablespoon (15ml) lemon juice
- 1 pinch (15 strands) saffron
- 4 green cardamom pods, crushed
- 2 whole cloves
- 1 teaspoon (5ml) rose water
For the Jamuns:
- 1.4 ounces (1/4 cup; 40g) fine semolina flour (see note)
- 1/4 cup (60ml) milk
- 5.3 ounces (2 cups; 150g) non-fat dried milk powder (see note)
- 1 teaspoon baking powder
- 1/2 teaspoon ground green cardamom
- 1/8 teaspoon Diamond Crystal kosher salt; if using table salt, use half as much by volume
- 6 tablespoons (90ml) heavy cream, divided plus more as needed
- 3 cups (720ml) grapeseed oil, for frying (see note)
- 3 tablespoons (25g) chopped pistachios or cashews, for garnish (optional)
For the Syrup: Combine water, sugar, lemon juice, saffron, cardamom, and cloves in a medium saucepan. Bring to a boil over medium-high heat, stirring occasionally with a rubber spatula, then reduce heat to a simmer and cook until a drop of the syrup pressed between two teaspoons forms a sticky, thin thread when spoons are pulled apart, about 5 minutes. Remove from heat, stir in rose water, cover, and set aside to keep warm.
For the Jamuns: In a small bowl, stir together semolina and milk, and set aside for 30 minutes to allow semolina to soak. Line a rimmed baking sheet with parchment paper. In a large bowl, whisk together milk powder, baking powder, cardamom, and salt. Sift mixture twice through a fine-mesh strainer onto prepared baking sheet, using clean hands or a bowl scraper to break up any lumps or bits that might be left behind in the strainer basket.
Transfer sifted mixture back to large bowl, and make a small well in the center; return sheet of parchment to baking sheet, and set aside. Add the semolina-milk mixture along with 1/4 cup (60ml) cream to center of well and, using clean hands, mix ingredients to form stiff but sticky dough. If mixture seems dry, add more cream as needed, 1 tablespoon (15ml) at a time, until dough forms. When mixing, try not to aggressively knead the dough, as the gulab jamuns will become quite dense; instead, press the ingredients gently together with your fingertips to form dough.
To form jamuns, take 1 tablespoon of dough and roll between palms to shape into a smooth, 1-inch (2.5 cm) ball. The dough will appear sticky at first, but the heat from your palms will help soften it and make it more pliable. If any cracks appear on the surface, wet your palm with a drop or two of heavy cream to help shape and smooth out ball. Place formed jamun on the reserved parchment-lined baking sheet, and repeat forming process with remaining dough (you should end up with 18 balls).
In a medium saucepan or Dutch oven, heat ghee or oil over medium-high heat to 325°F (160°C). Line a plate with paper towels. Working in two batches, carefully add half of the dough balls, one at a time, to the hot oil; using a slotted spoon, immediately move each ball as it’s added to the oil to prevent them from sticking to bottom of the pot. Cook, occasionally moving balls around with a slotted spoon to ensure even cooking, until jamuns are golden brown all over, about 3 minutes. Using slotted spoon, transfer to paper towel-lined plate, and allow to rest 30 seconds. Transfer fried jamuns to saucepan of scented syrup, and cover. Repeat process with remaining dough balls.
Let jamuns soak in the syrup, covered, for at least 4 hours, preferably overnight. (After the initial 4-hour soak, the gulab jamuns can be transferred along with the syrup to the refrigerator.) To serve, gently reheat gulab jamuns in the syrup over low heat until warmed through. Transfer to a platter or individual serving plates, spooning syrup generously over top, and garnish with chopped pistachios or cashews, if using. Serve immediately.