Heat oil in 4-6 quart cooking pot over medium heat. Add the whole spices, wait 30 seconds, stirring once or twice, and then add the onions. Sauté till ¾ brown, about 5-8 minutes.
Add the rest of the masala, garlic, and ginger. You can mix these all together with a little water before adding them to the pot. Stir for 2 minutes, scraping the bottom of the pan to ensure the ginger, garlic, and masalas don't stick and burn.
Add the tomatoes and cook for another 2 minutes. Then add the black-eyed peas and water. Cover and cook until tender. Approximately 35-40 mins. If the water starts to dry up during the cooking process, add a little more hot water.
When nearly done, use the back of your ladle to mash some peas against the side of the pot to make a thicker gravy. Cook for another 3-5minutes.
Transfer to a serving bowl and garnish with the chopped cilantro. It tastes good with plain boiled rice or any Indian-style pilaf.