Picture this: it's Friday night, you're craving that velvety butter chicken from your local Indian spot, but delivery is forty minutes away and costs as much as a tank of gas. Here's the thing – that rich, aromatic sauce is basically a savings account. You put in a little time upfront with the marinade, and it pays dividends all week in flavor.
Advertisements1
Most people think restaurant butter chicken needs a tandoor oven and a pantry full of mystery spices. Not true. What you actually need is patience with the marinade, a hot pan for char, and the discipline to bloom your spices in fat instead of dumping them into liquid. That last part is the compound interest of cooking – small move, huge payoff.
I've tested this recipe more times than I care to admit, and the version below gets you 90% of the way to restaurant quality with ingredients you can find at any grocery store. Let's walk through it step by step, and I'll flag the risks along the way.
Why You'll Love This Recipe
About the Ingredients
2 lbs (900g) boneless skinless chicken thighs, cut into 1.5-inch chunks
Thighs stay juicy where breast dries out; if you insist on breast, brine it in 2 cups water with 1 tablespoon salt for 30 minutes first. Buy thighs labeled 'air-chilled' if your store carries them – they brown better.
1 cup (240g) full-fat plain yogurt
Full-fat matters here because the fat carries the spices and protects the chicken. Greek yogurt works but is thicker, so add 2 tablespoons water. Avoid fat-free yogurt – it curdles under heat.
2 tablespoons ginger-garlic paste (or 1 tablespoon each freshly grated ginger and garlic)
Fresh grated beats jarred paste on flavor, but jarred is a fine shortcut on a weeknight. If using fresh, grate on a microplane so no fibrous chunks remain.
2 teaspoons garam masala, divided
Buy garam masala from a store with high turnover or an Indian market – stale spice is the number one reason home butter chicken tastes flat. You can substitute 1 teaspoon each ground cumin and coriander plus a pinch of cinnamon in a pinch.
1 teaspoon Kashmiri chili powder (or 1/2 teaspoon cayenne plus 1/2 teaspoon paprika)
Kashmiri chili gives deep red color with mild heat. Regular chili powder will work but will be noticeably hotter, so start with half.
1 can (28 oz / 794g) crushed tomatoes, or 2 lbs ripe tomatoes blended
San Marzano-style canned tomatoes are sweeter and less acidic. If using fresh, blanch and peel first for a smoother sauce.
1 large yellow onion (about 1.5 cups diced)
Yellow onion gives the sweetest base; red onion turns the sauce slightly purple and sharper. Dice small so it melts into the sauce.
6 tablespoons (85g) unsalted butter, divided
Real butter is non-negotiable for the finish – it's literally in the name. Use 4 tablespoons for cooking and 2 for the final swirl. Salted butter works but cut your added salt in half.
1 cup (240ml) heavy cream
Heavy cream gives the silky body; half-and-half works but the sauce will be thinner and can break if boiled. Add it off the heat to be safe.
1.5 teaspoons kosher salt, plus more to taste
Kosher salt dissolves more evenly than table salt. If using table salt, reduce to 1 teaspoon since the crystals are finer and saltier by volume.
1 tablespoon honey or sugar
Balances the tomato acidity. Honey adds a floral note; plain sugar is neutral. Taste the sauce before adding – very sweet canned tomatoes may need less.
1/4 cup (15g) fresh cilantro, chopped, for garnish
Flat-leaf parsley is the closest substitute if you dislike cilantro. Add it right before serving so it stays bright green.
Tips & Tricks
Marinate Overnight If You Can
Two hours is the minimum, but 12 to 24 hours in the fridge lets the yogurt tenderize the chicken and the spices penetrate all the way through.
Char, Don't Steam
Get your pan properly hot before the chicken goes in. If the chicken releases a puddle of liquid instead of browning, your pan was too cold – pour off the liquid and keep going.
Bloom Your Spices
Toasting ground spices in butter for 30 seconds before adding liquid unlocks their oils. Skip this and the sauce tastes dusty instead of fragrant.
Balance at the End
Taste after the cream goes in and adjust with salt, honey, or a squeeze of lemon. Restaurant kitchens season to order – you should too.
Pro Tips
Step-by-Step Instructions
1. Marinate the chicken
In a large bowl, combine the yogurt, ginger-garlic paste, 1 teaspoon garam masala, chili powder, and 1/2 teaspoon salt. Add the chicken chunks and toss until every piece is coated. Cover and refrigerate at least 2 hours, ideally overnight.
2. Sear the chicken
Heat 2 tablespoons butter in a large skillet over medium-high heat (375F / 190C). Working in two batches, sear the chicken 3 to 4 minutes per side until deeply golden brown with charred edges and an internal temperature of 165F (74C). Set aside on a plate – it will finish cooking in the sauce.
3. Soften the aromatics
Lower the heat to medium (325F / 163C) and add 2 more tablespoons butter and the diced onion. Cook 5 to 6 minutes, stirring, until the onion is soft and translucent with lightly golden edges. Add the remaining ginger-garlic paste and cook 30 seconds until fragrant.
4. Bloom the spices
Stir in the remaining 1 teaspoon garam masala and cook 30 seconds – you should smell the spices bloom and see them darken slightly. This step is fast; do not walk away or they will burn and turn bitter.
5. Build the sauce
Pour in the crushed tomatoes and add the honey and remaining 1 teaspoon salt. Bring to a gentle simmer (about 200F / 93C), then reduce heat to low and cook 15 minutes, stirring occasionally, until the sauce darkens and thickens and the fat starts to separate at the edges.
6. Blend until smooth
Carefully transfer the sauce to a blender (or use an immersion blender right in the pot) and blend 30 to 45 seconds until completely smooth and glossy. Return the sauce to the pan.
7. Finish the sauce
Return the seared chicken and any accumulated juices to the pan. Simmer gently over low heat 8 to 10 minutes until the chicken is cooked through and the sauce coats the back of a spoon. Stir in the heavy cream and simmer 2 minutes more – do not let it boil hard or the cream may split.
8. Swirl in butter and serve
Remove from heat and swirl in the last 2 tablespoons cold butter until melted and glossy. Taste and adjust salt or honey. Garnish with cilantro and serve with basmati rice or naan.
Delicious Variations
Smoky Version
Add 1/2 teaspoon smoked paprika with the garam masala and finish with a teaspoon of kasuri methi (dried fenugreek) rubbed between your palms for a deeper, more restaurant-like aroma.
Lighter Take
Swap the heavy cream for 3/4 cup whole milk plus 2 tablespoons cornstarch slurry, and reduce the butter to 3 tablespoons total. The sauce will be thinner but still flavorful.
Vegetarian Butter Paneer
Replace the chicken with 14 oz cubed paneer, skip the marinade, and pan-fry the paneer 2 minutes per side until golden before adding it to the sauce.
How to Store Restaurant-Quality Butter Chicken
Refrigerator
Store in an airtight container in the refrigerator for up to 4 days. The flavors actually improve on day two as the spices meld.
Freezer
Freeze in portion-sized containers for up to 3 months. The cream-based sauce can separate slightly on thawing, so reheat gently and stir well to bring it back together.
Reheating
Reheat gently on the stovetop over low heat (about 200F / 93C) or in the microwave in 30-second bursts, stirring between each, until steaming hot. Avoid a hard boil, which can make the sauce grainy.
Frequently Asked Questions
Q: Can I make butter chicken without a tandoor or grill?
Yes – a hot skillet on your stovetop does the job. Get the pan to medium-high (375F / 190C) and sear the chicken in batches so it browns instead of steaming. You will not get the exact tandoor char, but the marinade and sauce carry most of the flavor.
Q: Why is my butter chicken sauce grainy or split?
It usually means the cream was added over too-high heat or the sauce boiled after the cream went in. Add cream off the heat or over low heat and never let the sauce reach a rolling boil once dairy is in. If it does split, pull it off the heat and whisk in a tablespoon of cold cream or butter to bring it back.
Q: How spicy is butter chicken?
Traditional butter chicken is mild to medium, not hot. Most of the color comes from Kashmiri chili, which is more about color than heat. If you want more kick, add cayenne a quarter teaspoon at a time and taste as you go.
Q: Can I use chicken breast instead of thighs?
Yes, but breast dries out faster, so watch your timing. Brine it for 30 minutes and reduce the final simmer to 5 to 6 minutes, pulling it as soon as it hits 165F (74C). Thighs remain the better choice for this dish.
Q: Can I make butter chicken ahead of time?
Absolutely – it is one of the best make-ahead dishes because the flavor deepens overnight. Make the full recipe, cool it quickly, and refrigerate up to 4 days. Reheat gently on the stovetop, adding a splash of water or cream if the sauce has thickened too much.
Give this butter chicken a shot this week and taste the difference a proper marinade and a butter finish make. Once you nail it, you will wonder why you ever paid delivery fees for it. Keep it simple, keep it growing.
Restaurant-Quality Butter Chicken
Butter Chicken delivers tender marinated chicken in a silky tomato-cream sauce that tastes like your favorite Indian restaurant, made right at home.
🧂 Ingredients
- 2 lbs (900g) boneless skinless chicken thighs, cut into 1.5-inch chunks
- 1 cup (240g) full-fat plain yogurt
- 2 tablespoons ginger-garlic paste (or 1 tablespoon each freshly grated ginger and garlic)
- 2 teaspoons garam masala, divided
- 1 teaspoon Kashmiri chili powder (or 1/2 teaspoon cayenne plus 1/2 teaspoon paprika)
- 1 can (28 oz / 794g) crushed tomatoes, or 2 lbs ripe tomatoes blended
- 1 large yellow onion (about 1.5 cups diced)
- 6 tablespoons (85g) unsalted butter, divided
- 1 cup (240ml) heavy cream
- 1.5 teaspoons kosher salt, plus more to taste
- 1 tablespoon honey or sugar
- 1/4 cup (15g) fresh cilantro, chopped, for garnish
📋 Instructions
- 1Marinate the chicken — In a large bowl, combine the yogurt, ginger-garlic paste, 1 teaspoon garam masala, chili powder, and 1/2 teaspoon salt. Add the chicken chunks and toss until every piece is coated. Cover and refrigerate at least 2 hours, ideally overnight.
- 2Sear the chicken — Heat 2 tablespoons butter in a large skillet over medium-high heat (375F / 190C). Working in two batches, sear the chicken 3 to 4 minutes per side until deeply golden brown with charred edges and an internal temperature of 165F (74C). Set aside on a plate – it will finish cooking in the sauce.
- 3Soften the aromatics — Lower the heat to medium (325F / 163C) and add 2 more tablespoons butter and the diced onion. Cook 5 to 6 minutes, stirring, until the onion is soft and translucent with lightly golden edges. Add the remaining ginger-garlic paste and cook 30 seconds until fragrant.
- 4Bloom the spices — Stir in the remaining 1 teaspoon garam masala and cook 30 seconds – you should smell the spices bloom and see them darken slightly. This step is fast; do not walk away or they will burn and turn bitter.
- 5Build the sauce — Pour in the crushed tomatoes and add the honey and remaining 1 teaspoon salt. Bring to a gentle simmer (about 200F / 93C), then reduce heat to low and cook 15 minutes, stirring occasionally, until the sauce darkens and thickens and the fat starts to separate at the edges.
- 6Blend until smooth — Carefully transfer the sauce to a blender (or use an immersion blender right in the pot) and blend 30 to 45 seconds until completely smooth and glossy. Return the sauce to the pan.
- 7Finish the sauce — Return the seared chicken and any accumulated juices to the pan. Simmer gently over low heat 8 to 10 minutes until the chicken is cooked through and the sauce coats the back of a spoon. Stir in the heavy cream and simmer 2 minutes more – do not let it boil hard or the cream may split.
- 8Swirl in butter and serve — Remove from heat and swirl in the last 2 tablespoons cold butter until melted and glossy. Taste and adjust salt or honey. Garnish with cilantro and serve with basmati rice or naan.



