boil the potatoes and mash well in a mixing bowl with milk and add the rest of the ingredients to except flour. Make them into little round balls and roll them in flour and deep fry them in hot oil till golden brown.
For the gravy:
Chop the onion and fry till translucent, add the ginger garlic and tomato puree, let it cook on low heat till the raw smell of tomato disappears add some water if needed, add chili powder, salt. Now add the garam masala powder and cream and mix, let it simmer for 5 more minutes, add the potato balls and mix carefully. Take it off heat and serve with rice or parathas.