Heat the oil with the cardamom, cloves, chiles, bay leaves, cinnamon, black pepper, and cumin seeds in a large heavy-bottomed pot over medium-high heat until the spices are fragrant, 1 to 2 minutes. Stir in the ginger and cook until it becomes fragrant and sticky, about 1 minute. Add the onion and salt, and cook, stirring often, until the onion turns deeply browned and sticky, 15 to 20 minutes. If the onion begins to stick to the bottom of the pot or begins to burn, reduce the heat to medium and splash the pan with a few tablespoons of water, scraping up the browned bits and stirring them into the onion.
While the onion browns, place the tomatoes in a blender or food processor and purée until they are completely smooth. Set aside.
Stir in the garlic and cook until fragrant, 30 seconds to 1 minute, and then add the coriander, ground cumin, and turmeric, cooking until they begin to smell toasty, about 30 seconds. Stir in the cayenne pepper and 2 tbsp of the yogurt. Cook until heated through, about 1 minute, and then add the remaining 2 Tbs. yogurt. Continue to stir and cook the yogurt and spices until the contents of the pot are thick and sticky and the liquid from the yogurt has evaporated, about 2 minutes. Stir in the tomato purée and bring to a boil. Reduce the heat to medium-low and cook until a film of oil pools on the surface of the sauce, 6 to 8 minutes.
Stir the black-eyed peas, garam masala, and water into the tomato mixture. Increase the heat to medium and cook, stirring often, until a bubble or two breaks at the surface, 5 to 7 minutes. Season with salt and serve hot.