South India's most practical breakfast — semolina cooked with a spiced tadka into a loose, fluffy savoury porridge. Ready in 20 minutes. The dry-roasting step is what separates good upma from gluey upma.
Most upma failures trace back to skipping the dry-roasting step. Raw semolina added directly to water produces gluey, lumpy upma because the starch granules hydrate unevenly — some absorb water rapidly and swell while others stay dry, creating a sticky, uneven texture. Dry-roasting the semolina for 3–4 minutes pre-gelatinises a thin layer of starch on each granule, creating a moisture barrier that causes the granules to absorb water evenly and simultaneously when they hit the boiling liquid.
In a dry pan, roast semolina on medium heat for 3–4 minutes, stirring continuously, until it turns light golden and smells nutty. Do not brown deeply. Transfer to a plate and set aside.
Dry heat causes controlled partial gelatinisation of the outermost starch layers of each semolina granule. This forms a thin, glassy coat that acts as a moisture barrier. When roasted semolina enters boiling water, each granule hydrates slowly and uniformly through this barrier — preventing the rapid, uneven swelling that causes lumps. The nutty aroma indicates Maillard reactions between the semolina proteins and surface sugars — compounds that also contribute depth to the finished upma.
Heat oil/ghee. Pop mustard seeds. Add chana dal and urad dal — fry until golden. Add curry leaves, green chilli, ginger. Add onion — cook 6 minutes until translucent. Add cashews if using.
The South Indian tadka is the flavour base of upma. The dals fried in oil provide crunchy textural contrast to the soft semolina. Curry leaves at high heat release linalool and citronellal within seconds — these volatile aromatics are the signature South Indian flavour note that distinguishes upma from any other semolina preparation.
Add boiling water and salt to the tadka. Bring back to a rapid boil. Add roasted semolina in a steady stream, stirring constantly. Stir briskly for 30 seconds to prevent lumps. Cover with a lid and cook on low heat 3 minutes.
Adding semolina to boiling (not warm) water ensures immediate, uniform gelatinisation. The starch granules gelatinise at 62–72°C — in boiling water, every granule reaches this temperature simultaneously, producing even absorption. The rapid stirring during the first 30 seconds breaks any clumps before the starch sets. The subsequent covered cooking on low heat steams the top layer of semolina that is not fully hydrated from the boiling water alone.
Open lid. Fluff upma gently with a fork. Squeeze lemon juice over the top. Garnish with fresh coriander. Serve immediately.
Lemon juice added at the end provides volatile citric acid top-note brightness. Added during cooking, the citric acid would interact with the starch and change the gelatinisation behaviour. Off-heat addition preserves the volatile limonene and linalool aromatics in the lemon juice that provide the bright, fresh character that lifts upma from a plain savoury porridge to a balanced dish.