Add oil to a deep heavy bottomed pan. Once the oil is warm, add in the cinnamon stick and cumin seeds. As soon as the cumin seeds start to sizzle, add in the chopped onion and fry for 2-3 minutes till lightly browned.
Add ginger, garlic and spices, and fry for a few seconds till fragrant. Stir in the tomato paste and combine well with the onion and spices.
Add in chopped tomatoes and let it cook covered for a few minutes till the tomatoes start to pulp and blend with the spice mixture. Keep stirring occasionally to prevent the bottom from getting burnt.
Stir in kidney beans, season with salt and add about 1 cup of water (depending on the thickness of gravy you prefer). Lower the heat, and let it simmer for 8-10 minutes.
Garnish with fresh cilantro leaves and serve warm.