Cut the ginger in half and peel and grate one of the 1-inch pieces until you have a paste. Add the paste to mixing bowl. Set the rest of the ginger aside for when you cook.
Take 3 garlic cloves and mince them into the bowl. Set the other 3 cloves aside for when you cook.
Add 1 tsp of curry powder and 1 tsp of garam masala to the bowl and reserve the rest for when you cook.
Add 1/2 tsp of salt and 1/4 tsp of black pepper to the bowl and reserve the rest for when you cook.
Add the yogurt, and mix until you have a smooth marinade. Chop chicken into bite-sized pieces then add to a bag or dish and cover with marinade. Place in the fridge for 30 minutes to 2 days, the more time the better.
When you have marinated the chicken and are ready to cook, start by melting 1 tbs of butter in your pot over medium-high heat.
When the butter is melted, add chicken to pot and brown on all sides. Work in batches if necessary to give the chicken room to brown nicely, giving each batch 1 tbs of butter.
While the chicken is browning, dice your onion and peel and mince your garlic and ginger.
Remove chicken from pot and add whatever butter you have left (at least 1 tbs). When the butter is melted, saute the onion until it's soft.
Add garlic, ginger and spices and saute for a minute or two to release the aroma.
Add crushed tomatoes and sugar and mix.
Bring to boil (turn up the heat if necessary) then turn the heat down when it's bubbling. Simmer sauce for 10-15 minutes.
Use an immersion blender to blend your sauce in the pot or let the sauce cool for a few minutes then add it to your blender. Blend until smooth. (TIP: if your sauce is taking too long to cool, add the cold cream at this point instead of after.)
Return the sauce to the pot and mix in the cream. Mix in chicken with juices, fenugreek and cook for 10 minutes just to make sure chicken is cooked through. Serve.