Quick Recipe Version (TL;DR)
Quick Ingredients
- 1.5 cups (300 g) dried red kidney beans (rajma), soaked 8 hours
- 6 cups (1.4 L) water, plus more as needed
- 2 tbsp neutral oil or 1 tbsp ghee + 1 tbsp oil
- Whole spices: 1 tsp cumin seeds, 2 bay leaves, 1 black cardamom, 2 green cardamom, 4 cloves, 1-inch cinnamon
- 2 medium onions (about 250 g), finely chopped
- 1 tbsp minced ginger + 1 tbsp minced garlic; 1–2 green chilies, slit (optional)
- 400 g ripe tomatoes, grated/pureed (or 1.5 cups canned crushed)
- 2 tsp ground coriander, 1/2 tsp turmeric, 2 tsp Kashmiri chili powder, 1.5 tsp garam masala (divided), 1 tsp kasuri methi
- 1 3/4 tsp fine sea salt (divided), 1/2 tsp sugar (optional)
- 1 tbsp unsalted butter; 1/4 cup chopped cilantro
Do This
- 1) Soak beans 8 hours; drain and rinse.
- 2) Cook beans in 6 cups water at a gentle simmer (92–96°C / 198–205°F) until very tender, 60–75 minutes; reserve 3 cups cooking liquid.
- 3) Heat oil/ghee; bloom whole spices 60 seconds. Sauté onions with a pinch of salt until deep golden, 10–12 minutes.
- 4) Add ginger, garlic, and chilies; cook 1–2 minutes.
- 5) Stir in tomatoes, coriander, turmeric, Kashmiri chili, 1 tsp garam masala, sugar; cook until thick and glossy, 8–10 minutes.
- 6) Add beans + 3 cups cooking liquid; simmer 20–25 minutes, mashing a few beans to thicken. Salt to taste.
- 7) Finish with kasuri methi, remaining 1/2 tsp garam masala, and butter. Rest 5 minutes; garnish with cilantro.
Why You’ll Love This Recipe
- Deep, restaurant-quality flavor from patiently browned onions and whole spices.
- Comforting, creamy texture without loads of cream—just slow-cooked beans and a knob of butter.
- Pantry-friendly and flexible: dried or canned beans, stovetop or pressure cooker.
- Even better the next day—perfect for make-ahead meals and freezer-friendly portions.
Grocery List
- Produce: Onions, tomatoes, ginger, garlic, green chilies (optional), cilantro, lemon (optional)
- Dairy: Unsalted butter, ghee (or use all oil)
- Pantry: Dried red kidney beans (rajma), neutral oil, cumin seeds, bay leaves, black cardamom, green cardamom, cloves, cinnamon stick, ground coriander, turmeric, Kashmiri chili powder, garam masala, kasuri methi (dried fenugreek), salt, sugar (optional)
Full Ingredients
Beans
- 1.5 cups (300 g) dried red kidney beans (rajma), rinsed and soaked in plenty of water for 8–12 hours
- 6 cups (1.4 L) fresh water for cooking
- 1/8 tsp baking soda (optional, for extra-creamy beans)
- 1 tsp fine sea salt (added near the end of bean cooking)
Onion–Tomato Masala
- 2 tbsp neutral oil or 1 tbsp ghee + 1 tbsp neutral oil
- Whole spices: 1 tsp cumin seeds, 2 bay leaves, 1 black cardamom pod, 2 green cardamom pods, 4 whole cloves, 1-inch cinnamon stick
- 2 medium yellow onions (about 250 g), finely chopped
- 1–2 green chilies, slit lengthwise (optional)
- 1 tbsp minced fresh ginger
- 1 tbsp minced garlic
- 400 g ripe tomatoes, grated/pureed (about 3 medium) or 1.5 cups (375 ml) canned crushed tomatoes
- 2 tsp ground coriander
- 1/2 tsp ground turmeric
- 2 tsp Kashmiri red chili powder (mild heat, rich color)
- 1 tsp garam masala (plus 1/2 tsp for finishing)
- 1/2 tsp sugar (optional, to balance acidity)
- 3/4 to 1 tsp fine sea salt, to taste (for the gravy)
Finish
- 1 tsp kasuri methi (dried fenugreek), crushed between palms
- 1/2 tsp garam masala (reserved from above)
- 1 tbsp unsalted butter
- 1/4 cup (10 g) chopped cilantro, plus tender sprigs for garnish
- Lemon wedges, for serving (optional)
Optional For Serving
- Steamed basmati rice or jeera rice
- Red onion slices or quick pickled onions

Step-by-Step Instructions
Step 1: Soak and prep the beans
Rinse the kidney beans until the water runs clear. Cover with at least 3 times their volume in cold water and soak 8–12 hours. Drain and rinse. This hydrates the beans evenly and shortens the cook time for a creamy interior.
Step 2: Cook beans until soft and creamy
Add soaked beans to a pot with 6 cups (1.4 L) fresh water and the optional 1/8 tsp baking soda. Bring to a boil over high heat, skim foam, then reduce to a gentle simmer at 92–96°C (198–205°F). Cook until the beans are very tender and just starting to split, 60–75 minutes. Stir in 1 tsp salt during the last 10 minutes. Reserve 3–3.5 cups (720–830 ml) of the bean cooking liquid, then drain the rest. Beans should mash easily between two fingers.
Instant Pot/Pressure Cooker option: Cook soaked beans on High Pressure for 35 minutes, natural release 15 minutes. Reserve 3–3.5 cups cooking liquid.
Step 3: Bloom whole spices
In a heavy pot or Dutch oven, heat 2 tbsp oil (or 1 tbsp ghee + 1 tbsp oil) over medium heat until shimmering, about 175°C oil temperature. Add cumin seeds, bay leaves, black and green cardamom, cloves, and cinnamon. Stir 45–60 seconds until fragrant and the cumin darkens slightly. This blooming step unlocks deep base flavors.
Step 4: Brown the onions
Add the chopped onions and a pinch of salt. Cook over medium heat, stirring often, until deep golden-brown with caramelized edges, 10–12 minutes. If the fond begins to darken too quickly, reduce heat to medium-low and add a splash of water to deglaze. Properly browned onions are key to a rich, restaurant-style gravy.
Step 5: Add aromatics and tomatoes
Stir in ginger, garlic, and the slit green chilies; cook 1–2 minutes until the raw aroma mellows. Add tomatoes along with ground coriander, turmeric, Kashmiri chili powder, 1 tsp garam masala, and the optional sugar. Cook, stirring frequently, until the mixture is thick, glossy, and the oil separates at the edges, 8–10 minutes. Season with 3/4 to 1 tsp salt to taste.
Step 6: Simmer beans in the masala
Add the cooked beans and 3 cups (710 ml) of reserved bean liquid. Bring to a boil, then reduce to a gentle simmer at 92–96°C (198–205°F). Cook uncovered 20–25 minutes, stirring occasionally. Use the back of a spoon or a potato masher to mash 1/2 cup of beans directly in the pot—this releases starch and naturally thickens the gravy to a velvety, spoon-coating consistency. Adjust salt and add more bean liquid as needed for your preferred thickness.
Step 7: Finish and rest
Rub the kasuri methi between your palms to crush, then stir it in along with the remaining 1/2 tsp garam masala and 1 tbsp butter. Simmer 2 minutes more, then turn off the heat, cover, and rest 5 minutes. Garnish with chopped cilantro (plus a few sprigs) and serve hot with basmati rice. A squeeze of lemon at the table brightens the flavors.
Pro Tips
- Use Kashmiri chili powder for a brick-red color and gentle heat; add a pinch of cayenne if you want it spicier.
- Reserve plenty of bean cooking liquid—it has flavor and starch that give the gravy body without cream.
- Onion color matters: aim for deep golden-brown before adding tomatoes for the best depth.
- Mash some beans during the simmer for a luxurious, dhaba-style texture.
- Resting 5–10 minutes after finishing lets spices bloom and the sauce thicken slightly.
Variations
- Vegan: Use all oil instead of ghee and swap the butter for 1–2 tbsp cashew cream or a drizzle of olive oil.
- Instant Pot One-Pot: Sauté whole spices and onions on Sauté mode; add aromatics, tomatoes, and spices; stir in soaked beans and 3.5 cups water; Pressure Cook High 35 minutes, natural release 15 minutes; finish with kasuri methi, garam masala, and butter/oil.
- Quick Weeknight: Use 3.5 cups (about 2 cans, 425 g each) cooked kidney beans, drained and rinsed. Simmer in the masala 20–25 minutes with 2 cups water or vegetable stock.
Storage & Make-Ahead
Refrigerate in an airtight container up to 4 days. The flavors deepen by day 2. Freeze up to 3 months; thaw overnight in the fridge. Reheat gently over medium-low, adding a splash of water to loosen. For make-ahead efficiency, cook and freeze beans in their liquid in 2-cup portions; the masala comes together quickly on day-of.
Nutrition (per serving)
Approximate: 370 calories; 16 g protein; 53 g carbohydrates; 15 g fiber; 9 g fat; 1,050 mg sodium (varies with added salt). Values are estimates.


Leave a Reply