Why I make this

This one started as a Tuesday with no plan, half a can of coconut milk in the fridge, and two cans of chickpeas in the cupboard. I improvised, it worked, and it's been on rotation ever since. It's now the recipe I cook when I haven't been to the grocery store in five days, the recipe I send to friends who say they "don't know how to cook vegetarian," and the recipe I make a double of and eat for lunch all week.

The version below has six rounds of revision baked into it. The most important one was learning that whole cumin seeds, dropped into hot oil for 30 seconds before anything else, change the smell of the whole dish. After that, the difference is just patience — let the onion soften, let the tomato paste cook out, let the simmer go long enough for the chickpeas to drink the sauce.

The recipe

Prep 10 minCook 20 minTotal 30 minYield 4 servingsPan wide pot or Dutch oven

Ingredients

  • 2 tbsp coconut oil (or neutral oil)
  • 1 tsp whole cumin seeds
  • 1/2 tsp brown mustard seeds (optional but worth it)
  • 1 medium yellow onion, diced small
  • 1-inch piece fresh ginger, grated on a microplane
  • 3 garlic cloves, minced
  • 1 tbsp tomato paste
  • 2 tsp curry powder (or garam masala)
  • 1/2 tsp ground turmeric
  • 1/4 tsp cayenne (optional)
  • 1 (14 oz / 400 g) can crushed tomatoes
  • 1 (13.5 oz / 400 ml) can full-fat coconut milk
  • 2 (15 oz / 425 g) cans chickpeas, drained and rinsed
  • 5 oz (140 g) baby spinach (about 4 large handfuls)
  • 1 tsp kosher salt
  • 1 tbsp fresh lime juice
  • Cilantro and cooked rice to serve

Method

  1. Bloom the seeds. Heat oil in a wide pot over medium. Drop in the cumin and mustard seeds. They should sizzle within 5 seconds. Wait 30 seconds — they'll pop a little (mustard seeds will jump; this is fine) and smell toasty. Don't let them go past golden-brown.
  2. Onion, then aromatics. Add the onion. Stir, then leave it alone for 4 minutes, stirring once. You want soft and starting to colour at the edges. Add ginger and garlic, stir 60 seconds, no longer.
  3. Bloom the ground spices. Push the onion to the edges. Drop the tomato paste in the cleared centre. Sprinkle the curry powder, turmeric, and cayenne directly onto the paste. Stir the paste-spice mixture in the centre for 30 seconds, then stir everything together for another 30. The paste will go brick red.
  4. Build the sauce. Add the crushed tomatoes (use a splash of water to swill the can out into the pot). Add the coconut milk — shake the can hard first, the fat separates on the shelf. Add the chickpeas. Add the salt. Stir, bring to a gentle simmer, and cook uncovered for 12 minutes. The sauce will thicken and turn glossy. Stir occasionally so the bottom doesn't catch.
  5. Spinach, lime, taste. Add the spinach a handful at a time, stirring it in. It looks like too much, then it disappears. Once all of it is wilted (about 90 seconds), pull the pot off the heat. Stir in the lime juice. Taste. If it's flat, it usually needs more salt or a tiny bit more lime, not more spice.

Serve over rice with cilantro and another wedge of lime on the side.

Melissa's kitchen note

The single mistake I see beginners make on this recipe: skipping step 3. Tomato paste needs to cook in fat for it to taste like anything other than canned tomato. If you stir it directly into liquid, you get raw-paste twang and the curry tastes hollow. Push the onions out, give the paste 60 seconds in the oil with the spices, and the whole pot tastes like it simmered for an hour.

If your curry tastes flat at the end and you're not sure why: 95% of the time, it's salt or acid, not spice. Add 1/4 teaspoon of salt, stir, taste. Then a squeeze more lime. Only after both of those should you reach for more curry powder.

Ingredient notes

  • Whole cumin seeds — not ground. Ground cumin in step 1 will burn and taste bitter. If all you have is ground, skip the seeds and add 1 extra teaspoon of curry powder in step 3.
  • Full-fat coconut milk — light coconut milk makes the sauce thin and faintly soapy. The "creamed coconut block" is also fine if you can find it — use 100 g dissolved in 300 ml hot water.
  • Crushed tomatoes — not "tomato sauce" (too watery) and not "diced tomatoes" (too chunky). If diced is all you have, blitz them with an immersion blender first.
  • Spinach — baby spinach wilts in seconds and stays bright. Mature spinach works but takes 3 minutes and goes a darker green. Frozen spinach: thaw, squeeze out water, then add. It's a different texture, still good.
  • Curry powder — this is a whole topic. A standard supermarket curry powder works fine. Madras is hotter. Garam masala is warmer and more aromatic. Use what you have; just smell it first — if it smells dusty rather than fragrant, it's too old.

Substitutions I've tested

  • White beans instead of chickpeas. Cannellini or butter beans work. Texture goes creamier, the dish loses a touch of bite. Still good.
  • Kale instead of spinach. Use 4 cups stripped, chopped kale. Add it 5 minutes before the spinach would have gone in — kale needs longer to soften.
  • Add protein. 1 lb cubed boneless chicken thighs, browned at the start in the same pot before step 1, then removed and added back at step 4. Or 1 block firm tofu, pressed and cubed, added at step 4.
  • No tomatoes. Use 1 cup vegetable broth + 1 tbsp lemon juice. The flavour is brighter and less rich.
  • Make it dairy. A spoonful of plain yogurt swirled on each bowl right before serving turns it into a different (excellent) dish.

Storage and reheating

This curry gets better on the second day. The spices keep developing and the sauce thickens. Cool, then refrigerate up to 4 days in an airtight container.

Reheat gently on the stove with a splash of water if it's looking too thick. The microwave works too: cover, 90 seconds, stir, 60 seconds. Add a squeeze of fresh lime after reheating — the lime fades over time and a fresh hit brings it back.

Freezes well for up to 3 months. Thaw overnight in the fridge before reheating.

FAQ

Is this spicy?

As written, it's mild. The cayenne is the only heat and 1/4 teaspoon is barely there. For my kid I leave it out entirely; the curry powder still gives plenty of flavour. For a real heat lover, add a sliced fresh chilli with the garlic.

What if I only have one can of chickpeas?

Use one can of chickpeas and one can of any white bean, or one can of chickpeas and 1 cup of small-diced potato (added at step 4 with the tomatoes; needs the full 12-minute simmer to cook through).

Why did mine come out grainy?

Two possible causes: the coconut milk was light or split (look for a brand without emulsifiers, or shake the can hard before opening), or the heat was too high during the simmer and the sauce broke. Pull it off the heat, whisk in a tablespoon of water vigorously, and most of the time it comes back together.

Can I make this in advance for a dinner party?

Yes — in fact, I'd recommend it. Cook everything except the spinach and lime up to a day ahead. Reheat gently, add the spinach and lime fresh just before serving.