Indian meatball curry - also called kofta curry - is one of the most satisfying weeknight dinners you can make in 40 minutes. Spiced beef meatballs simmer directly in a creamy yogurt-tomato sauce, so you get tender, flavor-soaked meatballs without any frying or browning step.
The word kofta comes from the Persian kufta, meaning “to pound.” The dish traveled from Persian kitchens to Mughal courts in India, where it became a staple of North Indian and Pakistani cuisine. Today, kofta curry exists in dozens of regional variations - from creamy Kashmiri yogurt-based gravies to rich Punjabi tomato sauces.
Key Takeaways
- Kofta meatballs use chickpea flour or breadcrumbs as binder, plus grated onion for moisture - the same principle as a panade in classic meatballs.
- No browning required. Raw meatballs simmer directly in the sauce, which keeps them tender and saves a step.
- Whisk the yogurt smooth before adding it to the sauce. Add it slowly over low heat to prevent curdling.
- Simmer covered for 15 to 18 minutes. The meatballs absorb the curry flavor as they cook. Use an instant-read thermometer to confirm 160F (71C) internal temperature.
- Serve with basmati rice or naan. The sauce is meant to be spooned over starch - it is not a thick gravy.
What is Kofta Curry?
Kofta curry is a dish of spiced meatballs simmered in a seasoned sauce. In India and Pakistan, the meatballs are typically made from ground beef, lamb, or chicken mixed with onions, garlic, ginger, and a blend of warm spices. The sauce varies by region but almost always includes a base of onions, tomatoes, and either yogurt or cream.
The key difference from Western meatball dishes: kofta meatballs are cooked entirely in the sauce. There is no pan-frying or baking step. The raw meatballs go directly into the simmering curry, which keeps them incredibly tender because they gently poach in the liquid.
Regional Variations
| Style | Sauce Base | Key Spices | Meat |
|---|---|---|---|
| Punjabi | Tomato-onion, cream finish | Garam masala, cumin, coriander | Beef or lamb |
| Kashmiri | Yogurt-based, no tomato | Fennel, dry ginger, saffron | Lamb or mutton |
| Hyderabadi | Coconut-onion | Whole spices (cloves, cardamom) | Lamb |
| Bengali | Mustard oil, poppy seed | Panch phoron, turmeric | Beef or fish |
This recipe follows the Punjabi style - the most widely recognized version in Indian restaurants and home kitchens across North America. It uses a tomato-onion base with yogurt stirred in for creaminess.
The Recipe: Indian Meatball Curry (Kofta Curry)
Ingredients
For the meatballs:
- 1 lb (450 g) ground beef, 80/20
- 1/4 cup fine breadcrumbs or chickpea flour
- 1 large egg
- 1 small onion, finely grated and squeezed dry
- 2 cloves garlic, minced
- 1 tbsp fresh ginger, grated
- 1 tsp garam masala
- 1 tsp ground cumin
- 1/2 tsp ground coriander
- 1/2 tsp turmeric
- 1/2 tsp chili powder (or Kashmiri chili for color)
- 1 tsp kosher salt
For the curry sauce:
- 2 tbsp vegetable oil
- 1 medium onion, finely diced
- 3 cloves garlic, minced
- 1 tbsp fresh ginger, grated
- 1 tsp ground cumin
- 1 tsp ground coriander
- 1/2 tsp turmeric
- 1/2 tsp garam masala
- 1 can (14 oz / 400 g) crushed tomatoes
- 1 cup plain full-fat yogurt, whisked smooth
- 1/2 cup water
- 1 tsp kosher salt
- Fresh cilantro for garnish
Step-by-Step
- Make the meatball mixture. In a large bowl, combine beef, breadcrumbs, egg, grated onion, garlic, ginger, garam masala, cumin, coriander, turmeric, chili powder, and salt. Mix gently with your hands until just combined. Do not overmix.
- Shape. Roll into 16 meatballs, about 1.5 inches across. Set aside.
- Start the curry. Heat oil in a large deep skillet or Dutch oven over medium heat. Add the diced onion and cook 5 to 6 minutes until golden. Add garlic and ginger, cook 1 minute until fragrant.
- Bloom the spices. Add the ground cumin, coriander, turmeric, and garam masala. Stir for 30 seconds until fragrant. Blooming spices in oil releases their fat-soluble flavor compounds.
- Build the sauce. Pour in the crushed tomatoes and salt. Simmer 5 minutes, stirring occasionally.
- Add the yogurt. Whisk the yogurt until completely smooth. Lower heat to medium-low and slowly pour it into the sauce while stirring constantly. This prevents the yogurt from curdling on contact with the hot sauce.
- Add water and simmer. Stir in the water and bring to a gentle simmer.
- Cook the meatballs. Gently place the raw meatballs into the simmering sauce. Cover and cook 15 to 18 minutes, turning once halfway through, until meatballs reach an internal temperature of 160F (71C).
- Garnish and serve. Top with fresh cilantro. Serve over basmati rice or with warm naan.
Tips for Perfect Kofta
Grate the onion, do not chop it
Grating the onion releases more moisture into the meatball mixture, which keeps the kofta tender. Chopped onion creates pockets of steam that can cause meatballs to crack. After grating, squeeze out the excess liquid in a clean towel so the mixture is not too wet.
Use full-fat yogurt
Low-fat or nonfat yogurt tends to curdle more easily when added to a hot sauce. Full-fat yogurt has more stable proteins that resist splitting. If you only have low-fat, temper it first: stir a few tablespoons of the hot sauce into the cold yogurt before adding the yogurt mixture back to the pan.
Do not skip the chickpea flour
Chickpea flour (besan) is the traditional binder in kofta. It absorbs moisture differently than breadcrumbs - it creates a denser, more cohesive meatball that holds up in the simmering sauce. If you use breadcrumbs instead, the meatballs will be slightly softer but still work well.
Keep the simmer gentle
A rolling boil will break apart the meatballs. The sauce should barely bubble - just enough to maintain a temperature around 180F to 200F (82C to 93C). If the sauce reduces too quickly, add a splash of water.
Variations
Lamb Kofta Curry
Replace ground beef with ground lamb. Lamb has a richer, gamier flavor that pairs beautifully with the warm spices. Use the same cooking time and temperature.
Chicken Kofta Curry
Use ground chicken thigh (not breast, which dries out). The meatballs will cook faster - check at 12 to 14 minutes. Chicken kofta is lighter and works well with a coconut-based sauce variation.
Paneer Kofta (Vegetarian)
Replace the meat with 1 cup crumbled paneer mixed with 1/2 cup mashed potato, 2 tbsp cornstarch, and the same spice blend. Shape into balls, shallow fry until golden, then add to the sauce. This is the classic malai kofta found in North Indian restaurants.
Make it dairy-free
Omit the yogurt and add 2 tbsp of coconut cream at the end for richness. The sauce will be more tomato-forward but still delicious.
Serving Suggestions
- Basmati rice: The classic pairing. The long-grain rice absorbs the curry sauce perfectly.
- Naan or roti: Warm flatbread for scooping up meatballs and sauce.
- Raita: A side of cucumber-yogurt raita cools the palate and balances the warm spices.
- Jeera rice: Rice cooked with cumin seeds for extra aroma.
- Side salad: A simple kachumber salad (diced cucumber, tomato, red onion, lemon juice) adds freshness.
Storage and Reheating
- Fridge: cooked kofta curry keeps in an airtight container for up to 4 days. The flavors actually improve overnight.
- Freezer: freeze the fully cooked curry for up to 3 months. The sauce and meatballs both freeze well. Thaw in the fridge overnight.
- Reheat: warm gently in a saucepan over medium-low heat, stirring occasionally. Add a splash of water if the sauce has thickened too much. Microwave in 60-second intervals, stirring between.
FAQ
What is the difference between kofta and regular meatballs?
Kofta meatballs are seasoned with Indian spices (cumin, coriander, turmeric, garam masala) and use grated onion plus chickpea flour or breadcrumbs as binder. They are cooked directly in the curry sauce instead of being browned separately. The result is a more tender, sauce-infused meatball compared to pan-fried or baked Western meatballs.
Can I bake the meatballs instead of simmering them in the sauce?
Yes, but you lose the flavor infusion. If you prefer, bake the meatballs at 400F (200C) for 15 to 18 minutes, then add them to the finished sauce and simmer 5 minutes to let them absorb some flavor. This two-step method works well if you want a firmer meatball texture.
Why does my yogurt curdle in the curry?
Yogurt curdles when it hits a hot sauce too quickly. To prevent this: use full-fat yogurt, whisk it completely smooth, lower the heat to medium-low, and pour it in slowly while stirring. You can also temper the yogurt by stirring a few tablespoons of hot sauce into it first before adding the mixture back to the pan.
Can I use store-bought curry paste instead of ground spices?
You can use 2 to 3 tablespoons of store-bought tikka masala or korma paste as a shortcut. Stir it in with the onions instead of the individual ground spices. The flavor will not be as bright as freshly bloomed spices, but it still tastes good and saves time on busy nights.
How do I keep the meatballs from falling apart in the sauce?
Three things help: do not overmix the meatball mixture, use enough binder (breadcrumbs or chickpea flour), and keep the sauce at a gentle simmer rather than a boil. If your meatballs are still fragile, chill the shaped meatballs in the fridge for 15 minutes before adding them to the sauce - this helps them firm up.
Can I make this in a slow cooker?
Yes. Brown the onions and spices on the stove first, then transfer everything to the slow cooker. Add the raw meatballs and sauce, cook on low for 4 to 5 hours or high for 2 to 3 hours. The meatballs will be extremely tender.
Sources
- Indian Kofta Curry - The Spruce Eats
- Pakistani Beef Kofta Curry - Tea for Turmeric
- Kofta Across Continents: The Global Journey - Slurrp
- KUFTA - Encyclopaedia Iranica
- Meatball Curry Recipe - Food Network
- Safe Minimum Internal Temperature Chart - USDA FSIS
Related: Korean Meatballs with Gochujang Glaze | Classic Beef Meatballs in Marinara | Japanese Tsukune Chicken Meatballs | Greek Lamb Meatballs (Keftedes)