Soak the cashew nuts in warm water for few minutes and grind it into a smooth paste and keep it aside. Grind the tomatoes into puree and keep it aside.
For the masala paste, add all the dry ingredients mentioned in the list to the small jar of the blender and grind to a coarse powder. Now add the yogurt and grind again to make a smooth mixture. Keep this aside as well.
Peel the potatoes and cut them into bite size cubes. Add the potato cubes to boiling water and cook until they are fork tender. Do not overcook the potatoes.
When the potatoes are almost cooked, add the frozen peas to the water as well to cook for couple of minutes. Drain the vegetables and keep it ready.
In a pan, heat the oil/butter and add the cumin seeds and the bay leaf. When the cumin seeds crackle, add the ground masala mixture and cook until the raw smell disappears. This might take about 5 to 6 minutes in medium flame.
Now add the pureed tomatoes and cook for about 7 to 8 minutes until the tomatoes are cooked. The mixture will splatter all over when cooking, so keep the pan covered when cooking.
Add the spice powders; chili powder, turmeric powder, dhania-jeera powder, garam masala and salt. Mix well and cook until the oil separates from the masala. This will take a good 10 minutes in medium flame.
Next add the cooked potatoes and peas and coat with the masala.
Add the cashew nut paste and the milk and mix well. Adjust the consistency of the subzi by adding water if needed.
Cover the pan and simmer for about 10 minutes for the flavors to combine.
Garnish with cilantro and serve hot with roti, chapathi or rice.