Wash and peel the baby potatoes (or quarter the medium-sized potatoes). Prick them with a fork to allow the marinade to penetrate. In a bowl, mix yogurt, red chili powder, turmeric powder, and salt. Coat the potatoes with this mixture and let them marinate for at least 30 minutes.
Heat oil or ghee in a heavy-bottomed pan over medium heat. Add the marinated potatoes and cook until they turn golden brown on all sides. Remove the potatoes and set them aside.
In the same pan, add more oil if needed. Add chopped onions and sauté until they turn translucent.
Add ginger-garlic paste and sauté for a couple of minutes until the raw smell disappears.
Add tomato puree, tomato sauce (if using), red chili powder, cumin powder, coriander powder, garam masala, and salt. Cook this mixture until the oil starts to separate from the masala (spice mixture).
Add the fried potatoes to the gravy and stir well to coat them with the masala.
Reduce the heat to low and let the potatoes simmer in the gravy for about 10-15 minutes, or until they are cooked through and tender.
Stir in the cream (or cashew paste for a vegan version) and cook for another 2-3 minutes.
Garnish with chopped fresh coriander leaves.
Serve hot with naan, paratha, or steamed rice.