Add chicken to a large mixing bowl.
Add Greek yogurt, lemon juice, garam masala, turmeric, cumin, paprika, salt, black pepper, ginger paste, and garlic.
Mix until the chicken is fully coated.
Cover and refrigerate for at least 30 minutes.
Heat a large skillet or Dutch oven over medium high heat.
Add avocado oil.
Cook the chicken in batches for 3 to 4 minutes per side until lightly browned.
The chicken does not need to be fully cooked at this stage.
Remove and set aside.
Reduce heat to medium.
Add butter to the same pan.
Add diced onion and cook for 4 to 5 minutes until softened.
Add garlic and ginger paste.
Cook for 30 to 45 seconds until fragrant.
Add garam masala, cumin, paprika, turmeric, and chili powder.
Stir continuously for 30 seconds to toast the spices.
Pour in the crushed tomatoes.
Stir well and scrape up any browned bits from the bottom of the pan.
Simmer for 8 to 10 minutes.
Carefully blend the sauce until smooth using a blender or immersion blender.
Return the sauce to the pan.
Stir in heavy cream and brown sugar.
Bring to a gentle simmer.
Taste and adjust salt and black pepper as needed.
Return the chicken to the sauce.
Simmer for 12 to 15 minutes until the chicken is fully cooked and tender.
Turn off the heat and allow the butter chicken to rest for 5 minutes.
Serve over jasmine rice.
Garnish with fresh cilantro and serve with warm naan bread.