Tender spiced chicken meatballs simmered in a rich, garam masala tomato cream sauce — weeknight dinner done in one skillet, 55 minutes total.
Butter chicken is one of those dishes where the sauce does most of the heavy lifting — so turning it into a meatball format just makes sense. You get more surface area for browning, quicker cook time, and a better protein-to-sauce ratio in every bite. The meatballs themselves are seasoned with garam masala, ginger, and garlic so they're not just carriers; they actively contribute to the overall flavor of the braise.
The sauce follows the classic murgh makhani framework: bloomed whole spices, tomato paste cooked until brick-red, crushed tomatoes, and heavy cream added off-heat to prevent curdling. Expect a sauce that's deeply savory, gently spiced, with a slight sweetness from the tomato. This is a weeknight dinner — it comes together in one 12-inch skillet in about 55 minutes and scales easily for meal prep. If the sauce feels too thick after adding the cream, splash in 2–3 tbsp of chicken stock to loosen it before serving.
🛒 Links may earn us a small commission at no cost to you.
🛒 We may earn a small commission at no extra cost to you. We only recommend gear we'd use ourselves.
Basmati rice is the obvious partner, and for good reason — its long, dry grains soak up the tomato cream without turning to mush. Cook it the absorption method with a cardamom pod and a pinch of salt in the water, and you'll get a subtly fragrant base that echoes the spices in the meatballs without competing. Alternatively, warm naan from a store (Stonefire makes a solid version for everyday use) is excellent for dragging through the sauce.
For a vegetable side, a simple raita — plain whole-milk yogurt, grated cucumber, cumin, and salt — cuts through the richness of the cream sauce and resets the palate between bites. A quick sauté of blistered green beans with mustard seeds also works well, adding snap and bitterness as a counterpoint.
On the drinks side, an off-dry Riesling (Mosel-style, around 8–9% ABV) is the most useful wine here — its residual sugar tempers the chili heat, while the high acidity cuts through the cream. If you prefer beer, a malty amber ale like Alaskan Amber provides enough body to stand up to the spice without overwhelming it. For non-alcoholic: a cardamom and rosewater lassi, or simply sparkling water with a squeeze of lime to keep the palate clean.
For a dairy-free version, replace the heavy cream with full-fat canned coconut cream (the thick kind — scoop from the top of a chilled can of Chaokoh or Aroy-D). Use 1/4 cup in place of the 1/3 cup heavy cream, since coconut cream is richer. Swap the butter for 2 tbsp refined coconut oil when sautéing the aromatics. The sauce will take on a very slight coconut undertone, which actually works well with the garam masala profile.
To go vegetarian, swap the chicken meatballs for spiced paneer dumplings: combine 8 oz crumbled paneer, 1/4 cup breadcrumbs, 1 egg, 1 tsp garam masala, and 1/2 tsp salt. Form into 1.5-inch balls and pan-fry in 2 tbsp neutral oil until golden on two sides, about 3 minutes per side. They're more delicate than the chicken version — handle them gently when adding to the sauce and don't stir aggressively.
For a spicier version, double the cayenne to 1/2 tsp and add 1 tbsp finely minced fresh serrano (seeds and all) to the aromatics stage. This shifts the heat from background warmth to upfront. If you want deeper smokiness without extra heat, add 1/2 tsp smoked paprika alongside the garam masala.
This recipe doubles cleanly. Use a 5-quart sauté pan instead of a 12-inch skillet to accommodate the extra volume, and add 3–4 minutes to the simmering time to ensure the meatballs cook through.
Yes — form and brown the meatballs up to 24 hours in advance, then refrigerate them on a plate covered with plastic wrap. When ready to serve, make the sauce fresh and add the pre-browned meatballs during the simmering stage. They'll reheat through in the sauce in about 10–12 minutes over medium-low heat.
Store leftovers in an airtight container in the refrigerator for up to 4 days. Reheat gently on the stovetop over medium-low heat, adding 2–3 tbsp of water or stock to loosen the sauce, which will thicken considerably as it cools. Avoid reheating at a boil — it can cause the cream to separate and turn grainy.
The meatballs freeze well, but cream-based sauces can split upon thawing. If you want to freeze, do so before adding the cream — freeze the meatballs in the tomato base. Thaw overnight in the refrigerator, reheat the base, then stir in the heavy cream fresh before serving.
Ground turkey (93% lean) is the closest swap — use it 1:1 and expect a nearly identical texture. Ground pork works too, though it adds more fat and shifts the flavor slightly. Avoid 99% fat-free ground chicken or turkey; without enough fat, the meatballs will be dry and crumbly.
The most common cause is not cooking the tomato paste long enough. It needs a full 2–3 minutes of direct skillet contact to caramelize and deepen from bright red to brick-red — this step builds the sauce's backbone. If it's thin, simmer uncovered for an extra 5 minutes before adding the cream.
You can, but add it carefully — Greek yogurt will curdle if the sauce is at a rolling boil. Pull the skillet off the heat entirely, let it cool for 60 seconds, then stir in 1/4 cup of full-fat Greek yogurt slowly. Return to the lowest heat setting and don't let it boil again. The sauce will be tangier and less rich than the cream version.
No. Mix the meatball ingredients by hand in a bowl — use a fork to combine everything first, then switch to your hands for the final mix. The key is not to overwork the meat; mix just until the ingredients are incorporated and stop. Overworking ground chicken makes the meatballs dense and rubbery.
The most reliable check is an instant-read thermometer — ground chicken needs to hit 165°F internally. Visually, the meatballs should feel firm (not squishy) when pressed with a spoon, and any juices should run clear. After 12–14 minutes of simmering in the sauce, 1.5-inch meatballs will reliably be done.
Partially. Brown the meatballs in a skillet first for texture, then build the tomato sauce base in the same pan. Transfer everything to a slow cooker and cook on LOW for 3–4 hours. Stir in the cream during the last 30 minutes with the lid cracked slightly to prevent curdling from trapped steam.
Daily Home Cookery is self-funded. If something you cooked here made dinner a little better, a coffee keeps the kitchen running.
☕ Buy me a coffee
Tender braised pork shoulder slow-cooked in hard cider with fennel and apple. A hands-off Sunday dinner with incredible pan sauce.
A creamy, restaurant-worthy risotto with crispy pancetta, sweet leeks, and bright lemon. Ready in 50 minutes on the stovetop.
Bone-in chicken thighs seared until the skin cracks, then glazed with honey, soy, and garlic and finished in a 400°F oven. Ready in 50 minutes.