Heat a large skillet and pour oil. When the oil turns hot (a bit and not smoking hot because that would burn your whole spices), add the whole spices - cardamoms, bay leaf, and cinnamon (if using).
When they turn fragrant and sizzle a little, add the onions and green chili. Sauté until the onions are caramelized (takes about 10 minutes).
Add minced ginger and garlic paste and saute for a minute so the raw smell leaves.
Add the tomatoes and salt and let it cook covered until you see the oil separate from the top.
Stir in red chili powder, turmeric, garam masala, coriander powder, and cumin powder. Sauté until the spices don’t smell raw anymore and start to smell delicious, about 3 minutes.
Then add in the tomato and cook for another 3-4 minutes until you see the oil separate on the surface. Cover with a lid while it's cooking.
You can skip this step but if you want a creamy smooth sauce, let this sauce cool, and discard the bay leaf and cinnamon stick. Add to a blender jar and process until smooth. You might have to add more water to help the blending. I also like to blend in a few tablespoons of cooked chickpeas with the onion tomato sauce.
Add this creamy sauce to the pan along with the cooked chickpeas (or canned chickpeas).
Mix well and taste it for salt and garam masala. Add more if required.
Cover and simmer for 10-15 minutes. Finally, add amchur powder if using and turn off the heat