Heat the oil in a medium sized saucepan
Add the onions and fry until golden brown
Add the tomatoes, salt, ginger, garlic and all the powdered spices except garam masala powder
Fry on low heat for 10 minutes, adding a little water at a time until sauce is well blended
Add yoghurt (optional) and tomato puree and cook until sauce is dry
Add the meat and cook on medium heat, stirring occasionally until meat juices are dry
Add 2-3 cups water to desired consistency (the gravy should be quite thick if it is to be served with naan, paratha or rotli and slightly runny if it is to be served with rice)
When meat is tender, add potatoes and cook until potatoes are done
Lastly add garam masala powder, coriander leaves and lemon juice
Bring to boil and serve with naan, paratha, rotli or rice