Main Courses
This authentic butter chicken recipe with coconut milk transforms your weeknight dinner into a fragrant, creamy masterpiece that tastes like a Mumbai street stall. The secret lies in marinating the chicken overnight with yogurt and spices, then slow-cooking it in a rich tomato-coconut sauce that balances tangy, sweet, and smoky flavors. I developed this version after years of experimenting—because great butter chicken doesn’t need a tandoor to shine.
The magic happens in the sauce, where coconut milk replaces heavy cream for a lighter yet equally velvety texture. Traditional techniques like blooming whole spices in ghee and simmering the sauce low and slow ensure deep, complex flavors without bitterness. This one-pot method keeps cleanup simple while delivering restaurant-quality results that’ll have everyone asking for seconds.
By the time you serve this dish, you’ll have tender, golden chicken pieces swimming in a glossy sauce that’s both creamy and aromatic. The coconut twist adds a subtle sweetness that complements the tangy tomato base, creating a balance that’s uniquely satisfying. Pair it with basmati rice or warm naan for the full experience—this is comfort food with a global twist.
What makes this recipe truly special is its versatility. Use it for weeknight dinners, meal prep, or even a special occasion. The flavors only get better as they sit, making it perfect for making ahead. Let’s get cooking—your taste buds will thank you.
Ingredients for authentic butter chicken recipe with coconut milk
Authentic flavors start with these simple, fragrant ingredients—everything you need for restaurant-quality butter chicken.
| Ingredient | Amount | Notes |
|---|---|---|
| Boneless Chicken Thighs 🍗 | 1 ½ lb | Skin-on for flavor, cut into bite-sized pieces |
| Plain Yogurt 🥛 | 1 cup | Full-fat for creaminess, unsweetened |
| Coconut Milk 🥥 | 1 can | Full-fat, 13.5 oz can (13.5 oz) |
| Tomato Puree 🍅 | ½ cup | San Marzano preferred, no salt added |
| Ghee 🧈 | ¼ cup | For authentic flavor, not butter |
| Garlic Cloves 🧄 | 6 cloves | Freshly minced, not pre-minced |
| Ginger 🌿 | 1 tbsp | Freshly grated, not powdered |
| Garam Masala 🌶️ | 1 tbsp | Homemade or store-bought, not instant |
| Ground Cumin 🌿 | 1 tsp | Toasted for deeper flavor |
| Ground Coriander 🌿 | 1 tsp | Freshly ground preferred |
| Turmeric Powder 🧂 | ½ tsp | Bright yellow color, no additives |
| Red Chili Powder 🌶️ | ½ tsp | Adjust for heat preference |
| Salt 🧂 | 1 tsp | Kosher or sea salt, not iodized |
| Lemon Juice 🍋 | 1 tbsp | Freshly squeezed, no bottled |
| Fresh Cilantro 🌿 | ¼ cup | Chopped, for garnish |
The chicken thighs are non-negotiable—skin-on gives the best flavor and texture, and they stay juicier than breasts. Look for bone-in if you can find them, but boneless works fine. Trader Joe's and Whole Foods usually have good quality, or check the frozen section at regular grocery stores. The yogurt should be plain, full-fat—Greek yogurt works too, but traditional Indian recipes use regular yogurt for that perfect tang. If your yogurt has a strong taste, strain it first for a cleaner base.
No garam masala? Mix 1/2 tsp each cumin, coriander, cinnamon, cardamom, and cloves—it's the same thing. The coconut milk can be light or full-fat, but full-fat gives that rich, velvety texture we're going for. Short on tomato puree? Blend canned tomatoes and strain—it's fresher and less watery. Fresh ginger and garlic are worth the extra minute to grate/mince—pre-minced or powdered just doesn't cut it. The lemon juice brightens everything up, so don't skip it even if you think the dish needs more acid.
This sauce gets better as it sits, so make extra if you can—it reheats beautifully. Store leftovers in airtight containers for up to 4 days in the fridge, or freeze for 3 months. The chicken stays tender, and the sauce thickens slightly when reheated, which is perfect. For meal prep, portion into containers with rice—everything stays fresh and ready to eat. If you're making this ahead, let it cool completely before refrigerating to prevent a skin from forming on the sauce.
Why You'll Love This Recipe
- No-Marination Magic: I swear by this shortcut—just coat the chicken in yogurt and spices the night before, then toss it in the oven while I sip tea. No messy bowls, no waiting hours; the yogurt tenderizes it perfectly by morning.
- Creamy Without the Guilt: That coconut milk? It’s the secret weapon. The rich, velvety sauce clings to the chicken like a hug, but it’s lighter than heavy cream—plus, it balances the smoky ghee and tomato base so well, you’ll forget you’re eating something "healthy."
- Weeknight to Party Ready: Same recipe, different vibes. Slap it on naan for a lazy Tuesday, or drizzle it over basmati rice with toasted cashews for guests. The ghee adds depth, so it works with everything—even store-bought roti when I’m in a rush.
- Leftovers That Lie: Between us, this tastes better the next day. The flavors meld like old friends, and reheating it? Just a splash of water, 2 minutes in the microwave. I’ve fed my book club, my in-laws, and my hangry teen—all with the same pan of leftovers. Budget win.
Step-by-step instructions for creamy coconut-tomato butter chicken
Here's how to create this rich, velvety fusion—where coconut milk's creaminess meets classic butter chicken flavors.
Marinate the Chicken for Maximum Flavor
Cut the 1.5 lb boneless chicken thighs into bite-sized pieces and place them in a bowl. In a separate small bowl, whisk together the 1 cup plain yogurt, 1 tbsp lemon juice, 1 tsp salt, 0.5 tsp turmeric powder, 0.5 tsp red chili powder, and 1 tsp ground coriander. Pour this marinade over the chicken and mix gently until fully coated.
Cover the bowl and refrigerate for at least 4 hours (overnight works best). The yogurt will tenderize the chicken while the spices penetrate deeply. You'll notice the marinade turning slightly pink from the turmeric—a sign the flavors are infusing perfectly.
Sear the Chicken for Deep Flavor
Heat a heavy-bottomed Dutch oven over medium-high heat. Add 0.25 cup ghee and let it melt completely. Working in batches to avoid crowding, add the marinated chicken pieces and cook for 3-4 minutes per side until they develop a golden-brown crust. This searing step creates the rich, caramelized foundation for your sauce.
Once all chicken is browned, remove it from the pot and set aside. Don't drain the ghee—those flavorful browned bits will form the base of your sauce. If the chicken releases easily from the pot, it's ready. If it sticks, let it cook a bit longer until the crust forms.
Build the Coconut-Tomato Sauce
In the same Dutch oven, reduce the heat to medium and add 6 cloves freshly minced garlic and 1 tbsp freshly grated ginger. Sauté for 1-2 minutes until fragrant—you should smell that pungent, aromatic burst. Add 1 tbsp garam masala and 1 tsp ground cumin, stirring constantly for 30 seconds to toast the spices and deepen their flavors.
Pour in the 0.5 cup tomato puree and stir well, scraping up any browned bits from the bottom. Let it cook for 2-3 minutes until it thickens slightly. Then, slowly pour in the 1 can coconut milk, stirring continuously to combine. The sauce should begin to simmer gently, creating a luscious, creamy base.
Simmer the Chicken in the Sauce
Return the seared chicken to the pot and stir gently to coat it evenly in the sauce. Bring the mixture to a gentle simmer, then reduce the heat to low. Cover the pot and let it cook for 20-25 minutes, stirring occasionally, until the chicken is tender and the sauce has thickened to a creamy consistency.
Here's the thing—you want the sauce to coat the back of a spoon when you lift it. If it's too thin, uncover the pot and simmer uncovered for another 5 minutes to reduce it further. The chicken is done when it pulls apart easily with a fork and the sauce has that velvety, clingy texture.
Finish and Serve with Fresh Garnish
Once the chicken is cooked through, give it a final taste and adjust the seasoning if needed. The sauce should be rich, slightly sweet from the coconut, and balanced with the tangy tomato and spicy kick. Stir in the 0.25 cup chopped fresh cilantro just before serving to brighten the dish with a fresh, herbaceous note.
Serve immediately over steamed basmati rice or with warm naan bread. The contrast of the soft rice or pillowy bread against the creamy, spiced chicken creates the perfect balance. Each bite should deliver tender, flavorful chicken swimming in a luxurious coconut-tomato sauce.
Pro Tips For Making Authentic Butter Chicken Recipe With Coconut Milk
- Marinate Chicken Overnight: I learned this the hard way—rushing the yogurt marinade means tough, bland chicken. Even 4 hours makes a difference, but overnight (8-12 hours) lets the acid tenderize properly and the spices cling. Use full-fat yogurt and pat the thighs very dry first—wet skin = weak marinade.
- Simmer Coconut Milk Low: Coconut milk curdles fast when it boils. After adding it to the sauce, reduce heat to a gentle simmer (barely bubbling) and stir constantly for 3-4 minutes. If it splits, whisk in 1 tsp cornstarch slurry—sounds weird, but it works.
- Bloom Spices in Ghee: Skip the "toss spices in" approach—heat 2 tbsp ghee until shimmering, then add whole spices (cumin, cardamom, etc.) and toast for 30 seconds. This unlocks their flavor way better than dumping them cold. Let the aroma hit you—if it doesn’t smell amazing, start over.
- Strain the Tomato Puree: Store-bought tomato puree is often grainy and dull. Blend 3-4 fresh tomatoes, then strain through a fine-mesh sieve to remove skins/seeds. The result? A silky, vibrant base that doesn’t turn your sauce into a thick paste. (Yes, even if you’re impatient like me.)
Regional styles of these flavors
Mumbai Street Style
This is the version I grew up craving—rich, smoky, and deeply aromatic, just like what you'd find at a Mumbai street stall. The key difference here is the coconut milk, which replaces traditional cream while keeping that signature velvety texture. I first tried this fusion at a little hole-in-the-wall restaurant in Boston's North End, where the chef combined his Indian heritage with New England pantry staples. The secret? Simmering the sauce low and slow for at least 30 minutes to let the coconut milk's sweetness meld with the tangy tomato base. 🌶️
Punjabi Home Kitchen
In traditional Punjabi homes, butter chicken is often cooked in a heavy cast-iron vessel called a "handi." The technique translates beautifully to our Dutch oven method. What sets Punjabi-style apart is the generous use of kasuri methi (dried fenugreek leaves)—I recommend adding ½ tsp to the sauce at the very end for that earthy, slightly bitter depth. The chicken is typically marinated overnight with yogurt and grilled, then finished in the sauce. For extra authenticity, finish with 1 tsp malai (thickened cream) if you can find it at Indian grocery stores.
Goan Coastal Twist
Goa's coastal influence brings a lighter, slightly sweeter profile to butter chicken. Here, we embrace that by using more coconut milk (1½ cans) and adding ½ cup grated coconut to the sauce while simmering. The Goan version also incorporates 1 tsp fennel seeds toasted in the ghee at the beginning—this adds a subtle anise-like warmth that pairs beautifully with the coconut. Serve with Goan-style vine rice (rice cooked with coconut milk and mustard seeds) for a true regional experience. 🥥
Modern Fusion Adaptation
For a contemporary take, I've tested this recipe with chicken thighs and drumsticks instead of just thighs—it adds fantastic texture contrast. The coconut milk version also works beautifully with tofu or paneer for a vegetarian adaptation. Simply cube the tofu or paneer, marinate it in the yogurt-spice mixture for 2 hours (no need for overnight), then proceed with the sauce. The coconut milk creates a luxurious coating that makes even plant-based proteins feel indulgent. This version is perfect for sharing at dinner parties or meal prep.
Slow-Cooker Simplification
For busy weeknights, transfer the seared chicken and sauce to a 6-quart slow cooker after Step 3. Cook on low for 4-5 hours or high for 2-3 hours, then finish with fresh cilantro. The slow cooker's gentle heat enhances the coconut milk's creaminess while keeping the chicken impossibly tender. I've made this version for game days—it reheats beautifully and always disappears fast. The only adjustment needed is adding 1 tbsp cornstarch mixed with 2 tbsp water at the end to thicken the sauce before serving.
Spice Level Customization
Mumbai street style leans toward medium heat, while Punjabi versions often pack more punch. For a mild version, reduce the red chili powder to ¼ tsp and add ½ tsp sugar to balance. For extra heat, increase to 1 tsp chili powder and stir in 1 tsp Kashmiri red chili powder (which adds color without overwhelming heat). I keep a bottle of Penzeys Kashmiri chili powder on hand for these adjustments—it's the gold standard for controlled heat. 🔥
Nutrition facts
Frequently asked questions
Can I substitute coconut milk with heavy cream for a more traditional butter chicken?
The coconut milk creates a unique, lighter texture while keeping richness. If you prefer traditional butter chicken, replace the coconut milk with 1 cup heavy cream and add 1 tbsp butter for extra richness. The sauce will be thicker and more decadent, but the coconut version has a subtle sweetness that balances the tangy tomato base beautifully.
How do I make this recipe vegetarian or vegan?
Replace the chicken with 1.5 lb paneer or extra-firm tofu, cubed and marinated for 2 hours (no overnight needed). Use coconut yogurt instead of regular yogurt for vegan-friendly marinade. The coconut milk sauce works perfectly with these proteins, creating a creamy, satisfying dish. For extra flavor, add ½ tsp turmeric to the marinade.
Why does my sauce turn out too thin or watery?
This usually happens when the sauce doesn't simmer long enough. After adding the coconut milk, let it cook uncovered for 5-10 minutes to reduce it. For extra thickness, mix 1 tbsp cornstarch with 2 tbsp water and stir it in at the end. The sauce should coat the back of a spoon when done. Patience is key—rushing the process leads to watery results.
Can I make this ahead of time for meal prep?
This dish actually tastes better the next day as flavors meld. Store in airtight containers in the fridge for up to 4 days or freeze for 3 months. Reheat gently on low heat, adding a splash of water if needed to loosen the sauce. The chicken stays tender, and the coconut milk sauce thickens slightly when reheated, making it perfect for meal prep.
What's the best way to reheat leftovers?
Gently reheat on the stovetop over low heat with a splash of water or coconut milk to prevent drying. Avoid microwaving as it can make the sauce grainy. For extra flavor, add 1 tsp ghee while reheating. The sauce will thicken slightly, restoring that creamy, restaurant-quality texture.
