Here are twelve Indian meals that each hit 20g of protein for under ₹30 per serving. Prices are April 2026 Bengaluru mid-tier kirana. Protein values come from IFCT 2017 and USDA FDC (for tofu and curd), applied to realistic household portions — 30g dry dal, a 40g besan chilla, 25g dry soy chunks — not 100g food-science weights. The recipes below are an assembly layer, not a plan. The budget math that underlies the ₹30 ceiling sits in the protein per rupee pillar; the full seven-day template these meals slot into is the vegetarian meal plan.
Why the ₹30 ceiling makes the meal choose itself
Once you lock the per-meal budget at ₹30 and the protein floor at 20g, the ingredient shortlist compresses fast. Paneer at ₹2.12 per gram of protein stops being an anchor — a 50g cube costs ₹20 and delivers only 9.4g. Tofu at ₹2.06/g is the same story. The meals that clear both bars rely on pulses at ₹0.42-0.90/g, soy chunks at ₹0.48/g, besan at ~₹0.36/g, eggs at ₹1.05/g, and carrier grains (atta ₹0.43/g, rice ₹0.77/g). Paneer and tofu show up as 30g flavor layers at best, not as anchors.
The second constraint is dal portion discipline. A thin dal drizzled over rice is 3-4g of protein; the same recipe in a full katori is 7-9g. Every meal below assumes the katori. Serve the dal as sauce and the numbers collapse.
The twelve meals
| Meal | Protein | ₹/serving | Cook time | Who it fits |
|---|---|---|---|---|
| 1. Rajma-chawal + curd + roasted chana side | 22g | ₹24.30 | 40 min (batch) | Sunday family lunch, Monday dabba |
| 2. Khichdi with soy chunk topper | 23.6g | ₹20.60 | 25 min | Hostel, WFH single plate |
| 3. Chana masala + 2 rotis + curd | 21g | ₹19.20 | 25 min (pre-soak) | Family dinner, dabba |
| 4. Toor dal tadka + rice + curd + roasted chana | 22.3g | ₹25.30 | 20 min | Universal weeknight dinner |
| 5. Soy chunk bhurji + 2 parathas + curd | 25g | ₹19.70 | 20 min | Hostel, WFH, family |
| 6. Sattu drink + 2 boiled eggs + 1 roti (lacto-ovo) | 22.7g | ₹21.35 | 8 min | Pre-work breakfast, post-gym |
| 7. Soy bhurji + 2 jowar bhakri + curd | 24.7g | ₹19.80 | 20 min | Karnataka/Maharashtra dinner |
| 8. Moong dal chilla (2) + curd + sattu drink + peanut chutney | 22.5g | ₹21.60 | 15 min | Breakfast or light dinner |
| 9. Pesarattu (2, one small) + upma with peanuts + curd | 23.5g | ₹20.30 | 20 min | Andhra-style breakfast |
| 10. Urad-forward dosa (2) + dal-heavy sambar + coconut chutney | 26.9g | ₹23 | 10 min (batter prepped) | South Indian weekend breakfast |
| 11. Soy-and-paneer bhurji wrap + curd | 25g | ₹28.55 | 15 min | Family upgrade night |
| 12. Horse gram saaru + rice + curd + roasted chana | 20.2g | ₹21.30 | 10 min (batch) | Karnataka/Tamil Nadu household |
Three notes before the deep-dives. Meal 6 is the one lacto-ovo option — pure-vegetarian equivalents are Meal 5 (soy bhurji paratha) and Meal 8 (moong dal chilla combo). Meal 11 is the only one with paneer, and even there soy chunks carry the protein while paneer is a 30g flavor layer; paneer as the anchor would push the meal past ₹35. Tofu does not appear as an anchor — the ₹30 ceiling won’t carry tofu at realistic portions. If tofu is your preferred texture, the premium upgrade is covered in comparing convenient protein options.
The four repeatable cheap wins
Four of the twelve clear both bars by a comfortable margin and repeat well through a week without palate fatigue. These are the ones worth learning to cook on autopilot.
Soy chunk bhurji with two parathas — ₹19.70, 25g protein
Thirty grams of dry soy chunks, soaked ten minutes, squeezed, chopped fine, tempered with onion-tomato-ginger masala. Two parathas from 60g atta. A 100g curd katori. Twenty-five grams of protein in twenty minutes. The bhurji format hides the chew most people object to in soy chunk curries; the soy chunks protein article has the labeling-vs-true-protein math.
Urad-forward dosa with dal-heavy sambar — ₹23, 26.9g protein
Restaurant dosa batter runs a 3:1 rice-to-urad ratio, which gets you a crisp dosa and about 12g of protein across two. A 1:1 or 2:3 urad-leaning batter — closer to the traditional Tamil proportion than the restaurant short-cut — pushes two medium dosas to 21.5g. Pair with a sambar built on 25g dry toor per serving (not the drizzly 10g version) and the plate clears 26g. The urad dal nutrition breakdown explains why fermentation doesn’t cost protein. This is a weekend-batter meal; weeknight assembly is ten minutes once the batter’s in the fridge.
Khichdi with a soy chunk topper — ₹20.60, 23.6g protein
Thirty grams moong dal plus 40g rice, pressure-cooked. While it steams off, soak 20g dry soy chunks in hot water for seven minutes, squeeze, and temper with ghee, cumin, hing, and a pinch of chilli powder as a topper layer. A 100g curd bowl on the side. One-pot meal, 23.6g of protein. Khichdi alone lands at 10-11g — the topper is the whole trick and adds 10g without a second vessel to wash.
Horse gram saaru with rice and curd — ₹21.30, 20.2g protein
Forty grams dry horse gram, pressure-cooked 40 minutes after an overnight soak (or reheated from the Sunday batch), simmered into a saaru with tamarind, garlic, and curry leaves. 50g rice. A 150g curd katori. 15g roasted chana on the side as the 20g-clearing layer. Horse gram at ₹0.46 per gram of protein is among the cheapest pulses available; the cooking time is a Sunday problem, not a Wednesday one. The horse gram ingredient guide has more on regional preparations — huruli saaru, kollu rasam, kulith pithla — if you want to rotate recipes without changing the economics.
The lacto-ovo option — where the sattu-and-eggs breakfast fits
For readers who eat eggs, Meal 6 — sattu drink plus two boiled eggs plus one roti — is the fastest 20g breakfast on the list at eight minutes. The sattu drink is 30g of loose sattu in water with lime, black salt, and roasted cumin (6.3g of protein, ₹6 per the sattu protein content breakdown). Two boiled eggs from a weekend batch add 13.2g for ₹14. A roti carries the starch. 22.7g total, no cooking skill required.
Pure-vegetarian fallbacks that match or beat the same protein total: Meal 5 (soy bhurji paratha, 25g) or Meal 8 (two moong dal chillas with curd and sattu drink, 22.5g). The article’s premise works without eggs; the egg option is honored, not centered.
I ran the twelve meals for a week
April 11-17, 2026. Koramangala-adjacent kirana, single adult, cooked at home six of seven days. Rules: only meals from this list, three meals a day, nothing repeats more than twice.
| Slot | Meals used | Protein (avg/day) | ₹/day |
|---|---|---|---|
| Breakfast | Pesarattu ×2, chilla ×2, sattu-eggs ×2, khichdi ×1 | 22g | ₹21 |
| Lunch | Dal-rice ×2, rajma ×2, chana ×1, horse gram ×1, dosa ×1 | 21g | ₹23 |
| Dinner | Soy bhurji ×2, paneer wrap ×1, bhakri ×1, khichdi ×1, chana ×1, horse gram ×1 | 22g | ₹21 |
| Total | 65g | ₹65/day |
Weekly grocery for the protein portion: ₹462 against a ₹460 forecast, inside 0.5% of plan. Weekly protein: ~455g, or 65g/day average — under the 70g target from the meal-slot pillar but close enough that an extra curd katori closes the gap. The honest trade is that a ₹30/meal ceiling runs ₹20-25/day tighter than Pillar 2’s Budget B; the cost of that saving is a ~5g/day shortfall recovered by a supporting layer, not a recipe change.
Two findings the week made obvious. Horse gram and rajma are Sunday decisions. Miss the Saturday-night soak and Meals 1 and 12 drop off the menu for two days. Soy chunks are the only anchor with zero pre-prep friction — ten minutes of hot-water soak and they’re on the plate. That’s why they appear in four of the twelve meals and why my lineup got heavier on soy by mid-week.
The one meal I’d cut from a repeat week is the paneer wrap (Meal 11). At ₹28.55 it squeezes under the ceiling but the margin is too thin to survive a kirana price bump, and the soy-only version (25g soy chunks in the same wrap, ₹18) delivers the same protein for ten rupees less. Paneer on this budget is a weekend upgrade, not a weeknight default.
The three leaks that kill a cheap-protein meal
Dal served as sauce, not katori. A thin dal over rice delivers 3-4g of protein; the same recipe in a full katori is 7-9g. Every meal above assumes the katori. Drizzle instead and most meals fail the 20g bar. This is why the dal protein comparison builds its tables on 30g dry portions, not per-100g weights.
Paneer or tofu as the cost anchor instead of the flavor layer. At ₹30 per serving, 50g of paneer eats ₹20 for 9.4g of protein, leaving ₹10 for everything else — which almost never clears 20g. Use paneer at 30g as a flavor accent, let soy chunks or a dal carry the protein; the soy chunks vs paneer comparison has the side-by-side.
Thinning the portion to hit the price. Halving a dal portion from 30g to 15g saves ₹2 and loses 4g of protein. The ₹30 ceiling is a meal-quality ceiling, not a calorie ceiling; hit the price by substituting cheaper anchors, not by shrinking the serving.
For the dabba and commute context
Eight of the twelve travel well in a dabba. The exceptions are the two dosa meals (9 and 10, rubbery by 1 pm), Meal 6 (sattu drink separates over four hours), and Meal 11 (curd in a wrap turns soggy). The other eight — rajma-chawal, khichdi-with-soy, chana masala, dal-rice, soy bhurji paratha, soy-bhakri, moong dal chilla, horse gram saaru — hold texture cold or at room temperature for the standard four-hour window. The protein-forward workday lunch article has the dabba-specific packing notes.
A ₹30-per-meal plan at three meals a day is ₹90/day — within ₹5 of Pillar 2’s Budget B. The broader version of the same frame, with paneer twice a week, is high-protein meals under ₹100.
Final takeaway
A ₹30-and-20g-protein meal in an Indian kitchen is not a compromise format. It’s what happens when you let the cost math do the work: pulses and soy chunks carry the protein, carrier grains carry the plate, dairy and eggs show up as supporting layers, and paneer and tofu sit out the weeknight rotation. The twelve recipes above are not a plan — they’re the assembly grammar from which a week’s plan builds itself.
Cook four of them on repeat until the portions are automatic. Add the other eight as you go. The 20g number lands on its own.



