Get started by making the rice. Bring the rice and broth or water to the boil in a saucepan over medium-high heat. Allow it to bubble away for 10 minutes, then reduce the heat to medium-low and cover with a lid. Continue to simmer or another 10 minutes or until there are no signs of liquid. Turn off the heat and set aside with the lid still on for 10-15 minutes to rest.
Meanwhile, get into the butter chicken. Blitz the onion, garlic, ginger and oil in a blender until it becomes a thick paste.
Melt the butter or ghee in a large saucepan over medium heat, then add the sugar and all the spices. Cook, stirring, for 3-4 minutes or until lovely and fragrant. Add the onion paste you've just blitzed to the pan and continue to cook, stirring for 3-4 minutes or until everything starts to go lightly golden brown and aromatic.
Now, add the chicken, searing for 2-3 minutes on each side to get some colour on the outside and lock in the tenderness. Next, stir through the tomato paste and cook for 1-2 minutes. Finally, add the canned tomatoes, broth and coconut cream, season with salt and pepper, then simmer away for 10-15 minutes or until the chicken is cooked through and the sauce has reduced and become lovely and thick.
Just prior to serving, fluff the rice with a fork to make it nice and light. Serve alongside the curry, garnished with fresh coriander and garlic naans, if you like.