Boil a big pot of water and add the spinach and methi leaves to the boiling water. Leave them in there for about three minutes, then fish out the leaves and, using a little water, grind them into a coarse paste. Set aside.
Heat the oil in a skillet and add the cardamom pods, cloves, cinnamon, mustard seeds and cumin seeds. When they sputter, add the onions.
Saute until the onion starts to brown. Now add the garlic and ginger and saute for another minute.
Add the green chillies and saute another couple of minutes.
Add the coriander powder, stir to coat with oil and toast lightly, about 30 seconds, and then add the spinach-methi puree.
Cook the puree, stirring frequently to keep it from sticking to the bottom, until all the water has evaporated and the greens start to express the oil. You do have to be a little patient and get to this step because that's a good sign your greens are cooked and ready.
Now add the powdered garam masala and about 1 cup of water to the skillet. If you want a looser curry, add more water.
Add the vegan butter, if using, and salt to taste. Add cilantro, stir in, and turn off the heat.
Serve hot with parathas or rotis.