Remove the skin and bones from the chicken if needed, then cut it into bite sized pieces.
In a large bowl, combine the chicken, yogurt, garlic, ginger, lemon juice, garam masala, cumin, coriander, turmeric, paprika, and salt. Mix until every piece is well coated. Cover and marinate for at least 30 minutes, or overnight.
Make the Chicken Stock (Optional): If making homemade chicken stock, add the reserved chicken bones and skin to a pot with the onion, garlic, bay leaf, peppercorns, and water. Bring to a boil, then reduce to a simmer and cook for 1 hour. Strain and set aside.
Heat the oil in a large pot over medium heat. Add the marinated chicken and cook until browned and fully cooked through, about 6 to 8 minutes. Transfer to a plate and set aside.
In the same pot, melt the butter. Add the onion, garlic, and ginger and cook for 1 to 2 minutes until the onions softened.
Pour in the tomato sauce (or passata) and stir well.
Add the paprika, cayenne pepper, curry powder, cumin, garam masala, chicken bouillon, salt, and sugar. Mix.
Pour in the chicken stock and water, stir to combine, then cover and let the sauce simmer for 15 minutes.
Stir in the heavy cream until the sauce is smooth and creamy.
Add the washed rice and gently stir until the rice is evenly coated in the sauce. Taste and adjust the salt if needed.
Cover with a tight fitting lid and cook over low heat for about 30 minutes, or until the rice is tender.
Once the rice is cooked, stir well to let some of the steam escape. This helps keep the grains fluffy and separate.
Return the cooked chicken to the pot and gently fold it into the rice until evenly distributed.
Garnish with chopped cilantro or parsley, then serve warm.
