It’s 6 p.m., the school run is over, Miso has already claimed your lap on the sofa, and the question of the day has arrived again: what’s for dinner? You open the fridge. Eggs, some sad lettuce, a bag of ground chicken from last Sunday’s meal prep. A plain chicken night is on the table — unless it isn’t.
This is the night I make butter chicken meatballs. Not the takeaway version (though I’ll be the first to admit I’ve eaten that too, usually at 11 p.m. over the laptop). The home version: soft chicken meatballs simmering in a rich, creamy, warmly spiced sauce, served over basmati rice with naan for scooping. All the comfort of butter chicken, in meatball form, with none of the mess of a full curry night.

Why this dish works for a real weeknight
Let me be honest about my relationship with curries. I love them, and I also love the idea that I’m the kind of person who cooks elaborate dinners regularly. The truth: most weeks my kitchen runs on a short list of dishes that are forgiving, fast, and good enough to not feel like a chore. Butter chicken meatballs are on that list.
Here’s why this one earns its place:
- One pan. The meatballs brown in it, the sauce builds in it, and everything finishes in it. Fewer dishes is the whole point of weeknight cooking.
- No special prep. The only technique is rolling the meatballs, and damp hands make that easy. Everything else is stirring.
- It stretches into meals. This makes a generous batch — plenty for dinner twice, and the leftovers freeze well, so one Sunday afternoon covers several evenings.
- It’s gentle. Butter chicken is traditionally mild and warming rather than spicy. Add a pinch of chilli if you want a kick, leave it out for a family-friendly version. There’s no pressure either way.
I’m not a registered dietitian — I have a diploma in food science and nutrition and six years of sitting in clinical nutrition appointments — but I do know what a dinner tastes like when the sauce has all the fat and body it needs. Cream is what makes butter chicken sauce actually taste like butter chicken. It turns the spiced tomato base into something velvety. I don’t substitute milk here. The sauce needs the fat to get its characteristic richness.

Ingredients
For the meatballs
- 2 lb (1 kg) ground chicken / chicken mince (ground turkey works just as well)
- 4 slices white bread, crusts removed
- 8 tbsp milk
- 2 tsp garlic powder
- 2 tsp salt
- 1 tsp white pepper
A quick note on the bread and milk: in the cook’s language this is called a “panade,” and it’s the reason these meatballs stay soft and juicy instead of turning dense and dry. The soaked bread soaks up moisture and holds it inside as the meatballs cook.
For the butter chicken sauce
- 1 tbsp butter or ghee
- 1 onion, chopped
- 6 garlic cloves
- Thumb-sized piece of fresh ginger, grated (about 1 tbsp)
- 24 oz (700 ml) tomato passata or purée
- 1 cup heavy cream
- 2 tsp sugar — a small amount to balance the tomatoes, not enough to taste sweet
- Salt and black pepper to taste
- Fresh cilantro for serving (or coriander, if that’s what you call it)
You’ll also want a pinch of chilli powder or cayenne if you like a gentle kick — optional, and the first thing I leave out when Tom’s little league friends are coming for dinner. The spice blend is simple: garam masala as the base, with cumin, cardamom and turmeric added alongside. Garam masala is the warm, complex, aromatic blend that defines butter chicken — if you don’t have it, that’s the one thing worth picking up at the shop, because it does a lot of the flavour work for you.
How to make it: 5 simple steps
Don’t let the ingredient list scare you. The cooking itself is short, and each step is basically “add the next thing and wait.”
- Mix the meatball base (10 minutes of soaking time). Tear the crustless bread into a large bowl, pour over the milk, and let it soak for 10 minutes. Mash it with a fork into a smooth paste, then stir in the garlic powder, salt and white pepper, breaking up any bread chunks. Add the ground chicken and mix until just combined. This is the one place where restraint matters — overwork the mixture and the meatballs come out dense and tough. With damp hands, shape the mixture into golf-ball-sized meatballs. Damp hands prevent sticking and give you a smoother surface.
- Brown the meatballs. Heat a splash of oil in a large, deep pan over medium-high heat. Brown the meatballs on all sides until golden, turning occasionally — in batches if your pan gets crowded. They don’t need to be cooked through here; the browning is where the flavour starts. Remove and set aside. Leave all those browned bits in the pan — that’s the good stuff.
- Build the sauce in the same pan. Reduce the heat to medium and add a tablespoon of butter or oil. Soften the chopped onion for about 5 minutes until lightly golden, then add the garlic and grated ginger and cook for 1 minute until fragrant. Add your spices — garam masala, cumin, cardamom, turmeric, and the chilli if you’re using it — and stir for 30 seconds until fragrant and coating the onions.
- Simmer. Pour in the tomato passata, scraping up the browned bits from the bottom of the pan — that fond is packed with flavour and becomes part of the sauce. Simmer for 10 to 15 minutes until the sauce has thickened and the raw tomato taste has cooked out. Add the sugar and season with salt. Then reduce the heat to low, stir in the cream (the sauce will lighten to a warm orange), and simmer gently for 2 to 3 minutes.
- Nestle the meatballs back in. Return the browned meatballs to the pan and spoon the sauce over them so they’re partially submerged. Simmer gently for 10 to 15 minutes until the meatballs are cooked through and have absorbed some of the sauce. Scatter with torn fresh cilantro and serve over basmati rice with warm naan for scooping.
Make it your own
- Ground turkey instead of chicken — very similar result, leaner texture.
- Chill it or not — leave the chilli out for a milder, family-friendly version, or add a pinch of cayenne for a gentle kick.
- Something lighter on the side — a simple salad with something fresh and acidic cuts through the richness nicely. Cucumber raita (cool yogurt with cucumber, mint and a pinch of cumin) is the classic pairing; the coolness against the warm, rich sauce works beautifully.
- Bread options — warm naan for tearing and scooping is essential in my house. Roti or chapati work if you want a lighter bread.
Storing and freezing (this is why I batch it)
This is the part that makes the recipe a meal-prep favourite, and the reason I make it on a Sunday when I have half an hour that isn’t consumed by laundry.
Fridge: store the meatballs in the sauce in an airtight container for up to 3 to 4 days. Reheat gently on the stove over medium-low heat, and add a splash of cream or water if the sauce has thickened overnight.
Freezer: the meatballs in sauce freeze well for up to 3 months. Cool completely, transfer to containers, and freeze. Defrost overnight in the fridge and reheat gently on the stove. The sauce may look slightly separated after thawing — a good stir and gentle heat brings it right back together. Cook fresh rice when serving.
Freeze the meatballs separately: bake or brown them, flash-freeze on a tray, then transfer to a bag. Drop the frozen meatballs straight into simmering butter chicken sauce for 15 to 20 minutes. This is my go-to freezer habit: make the meatballs in a batch, freeze them in portions, and pull one out whenever I need a fast dinner. They work the same way in tomato sauce, teriyaki glaze, or any other sauce you’ve got simmering.

Start today
- ✓ Pick up garam masala on your next shop run — it’s the one ingredient that does the heavy lifting here.
- ✓ Freeze a batch of meatballs this week so next Tuesday’s dinner is a 20-minute decision, not a 3 p.m. panic.
- ✓ Keep warm naan and basmati rice as standing staples — they turn a simple meatball batch into a proper meal.
Today’s tiny step
Put the ground chicken on your shopping list. That’s it. The sauce takes care of itself once you start stirring.
— E, your habit neighbor
Recipe at a glance
Prep: 20 minutes · Cook: 30 minutes · Total: 50 minutes · Servings: 8 · Per serving: about 363 kcal
Per serving (approx.): 19 g carbs, 24 g protein, 22 g fat, 2 g fibre. Nutrition values are estimates based on a standard recipe card — if you’re cooking for specific dietary needs, check with your doctor or a registered dietitian.