Place chicken pieces in a large bowl. Rub with lemon juice and enough salt. Marinate for 10 minutes in the refrigerator.
Meanwhile, place garlic, ginger, cumin, coriander, garam masala, chili powder, paprika and yogurt in a blender. Process until smooth. Add this paste to the bowl of chicken. Add in oil and mix well. Marinate for at least 30 minutes or overnight if possible.
When you are ready, preheat grill. Thread the chicken pieces onto skewers. Grill, turning occasionally, for 15 – 20 minutes or until cooked through. Remove chicken from skewers. Set aside.
Meanwhile heat oil in a large pan over medium heat. Add onions. Saute for 2-3 minutes or until lightly browned. Add ginger. Saute until aromatic. Add ground turmeric, ground coriander, paprika and red chili powder. Saute for a minute. Add tomato paste and fry for a few seconds. Now add in the tomatoes. Saute until they are soft and mushy. Bring to a boil, reduce heat and simmer for 2-3 minutes.
Add lemon juice and cream. Add in enough water to make a thick sauce. Season with salt. Simmer, stirring occasionally, for 3-4 minutes. Add more water if needed.
Add garam masala and coriander (cilantro) leaves. Heat through. Stir in the grilled chicken. Garnish with more coriander leaves if you like. Serve with naan, roti or rice.