In a large Dutch oven or large skillet over medium heat, add oil and butter. Add onions and cook until lightly golden, about 5 minutes.
Stir in garlic and ginger, and cook until fragrant, about 30 seconds, stirring often.
Add the chicken, tomato paste, garam masala, chili powder, fenugreek leaves, ground cumin, turmeric, 1 teaspoon salt, and 1/2 teaspoon pepper. Stir together and cook for 5 minutes, stirring occasionally.
Reduce heat, add the heavy cream and gently simmer until chicken is thoroughly cooked and reaches 165 degrees on a digital thermometer, about 10 minutes more.
Season to taste with salt and freshly ground black pepper. Garnish with cilantro. Serve over cooked rice with naan bread on the side.
Notes
Garam masala: Find this Indian spice blend at the store, or make your own garam masala with 2 Tbsp. ground cinnamon, 1 Tbsp. freshly ground black pepper, 2 tsp. ground cloves, 1 tsp. ground cardamom, and 1 tsp. ground ginger (See FAQs for information on using whole spices).
Red chili powder: A single or blend of ground chilies, not the Americanized "chili powder" used in chili recipes. Kashmiri and Guntur chilies are popular varieties, or substitute cayenne pepper.
Fenugreek leaves: Also known as kasoori methi, this herb is a staple in Indian cuisines, especially chutneys and curries, and gives a distinct bittersweet taste. Substitute 1/2 tsp ground fenugreek for the leaves. If neither of those are available, you can substitute 1/2 tsp dried ground mustard, but the flavor of the dish will be different.
Yield: This recipe makes about 3 cups of Butter Chicken, enough for 4 servings, 3/4 cup each.
Storage: Store leftovers in an airtight container in the refrigerator for 3 to 4 days, or freeze for up to 2 months. Thaw overnight in the refrigerator and reheat on the stovetop or in the microwave until chicken reaches 165 degrees internally.