Heat oil in the pan and fry onions on medium heat until light brown. Add Ginger garlic paste and fry for around a minute. Add a dash of water to stop onion from turning darker.
Add tomato paste and cook for 2 minutes. Add 1/4 cup of water. Keep mixing and allow onions to break down. This should take 3-4 minutes.
Add all the spices and mix them. Continue to stir until oil starts to separate.
Turn the heat low and add yoghurt. Keep stirring for a minute.
Turn heat to medium high and keep cooking until water evaporates from yoghurt and oil starts to separate.
Add 2 cups of water, cover and cook gravy on low heat for around 15-20 minutes. Its should be bubbling hot. If you see chunks of onion in the sauce , use hand blender to make the sauce smooth.
Add meatballs in the gravy. There should be around an inch of space between meatballs.
Gently move around the pot to rotate the meatballs. Avoid using spoon as they may break
Cover the pot and cook on low heat for 15-20 minutes.
Add coriander and hard boiled eggs. Serve with roti/naan or rice.