Kofat Curry/meat Ball Curry
⏲ ~34 min total · prep 18 · cook 16 · 4 servings
Lunch⏱ 45 min total🔥 6.3g net carbs⚡ ≈429 kcal/serving~10% of calories from carbs
By the KFI Test Kitchen · Tested & approved by Jason Lieu, KFI recipe editor
Published Sep 15, 2026 · Updated Sep 15, 2026
Ingredients
- 1 lb ground beef (80/20)
- 1/4 cup almond flour
- 1 large egg
- 1 medium onion, half grated and squeezed dry, half finely chopped
- 2 tbsp ghee
- 1 tbsp ginger-garlic paste
- 1 tbsp ground coriander
- 2 tsp ground cumin
- 1 tsp turmeric and 1/2 tsp cayenne
- 1 cup canned crushed tomatoes
- 3/4 cup full-fat coconut milk
- 1/4 cup cilantro, chopped
Instructions
- Knead the beef with the almond flour, egg, grated onion, 1 teaspoon salt, and 1/2 teaspoon of the cumin, then roll into 16 balls about 1 inch across.
- Heat the ghee in a 12-inch skillet over medium-high and brown the meatballs 4-5 minutes, turning so all sides crust over — they will still be raw inside; lift them out.
- Drop the heat to medium and cook the chopped onion in the same fat 6-8 minutes, until deep golden at the edges; stir in the ginger-garlic paste for 1 minute.
- Add the coriander, remaining cumin, turmeric, and cayenne and bloom them 30 seconds, just until the pan smells toasty — ground spices scorch fast.
- Stir in the crushed tomatoes and cook 4-5 minutes, until the masala darkens, tightens, and glistens with separated oil.
- Pour in the coconut milk with 1/2 cup water, nestle the meatballs back in, cover, and simmer gently 15 minutes, until the balls are cooked through and the sauce falls slowly from a spoon.
- Rest off the heat 5 minutes and finish with the cilantro.
Why this recipe works
- Grated onion binder Grated onion, squeezed dry, replaces breadcrumbs as the binder and keeps the kofta tender. Skip the squeezing and the mix goes loose and hard to roll.
- Onion two ways Half the onion goes into the meat, half fries until deep golden for the sauce. Sweetness lands in two different registers.
- Bloomed spices Thirty seconds in hot ghee wakes up the coriander and cumin. Dumped straight into liquid, the same spices taste dusty.
Tips for making this recipe well
Brown, don't finish
Four to five minutes of turning gives the balls a crust while the centers stay raw. They cook through in the sauce, and skipping this step costs you depth.
Read the masala
The tomatoes are ready when the mixture darkens, tightens, and glistens with oil at the edges. Rush this and the sauce tastes raw.
Scorch watch
Ground spices burn in under a minute. Thirty seconds of stirring, until the pan smells toasty, is the whole window.
Gentle simmer only
Once the meatballs go back in, keep the cover on and the heat low. A hard boil rattles them apart.
Rest before serving
Five minutes off the heat lets the sauce settle and thicken slightly. Cilantro goes in at the end so it stays green.
Serving suggestions
Spoon the meatballs and sauce into shallow bowls and finish with the chopped cilantro while the sauce still steams. The sauce is built to pool, so give every bowl more of it than feels reasonable. At 6.3 net carbs a serving, there is room for cauliflower rice underneath if you want something to catch it. A wedge of lemon on the side cuts the coconut richness. Fifteen minutes of covered simmer does the work; the rest is waiting.
Storage and meal prep
Refrigerate the meatballs in their sauce, covered, for 3 to 4 days; the sauce keeps them from drying out. It thickens in the cold, so loosen with a spoonful of water when you reheat. Warm everything over medium-low until the balls are heated through, about 10 minutes, and add the cilantro fresh. For the freezer, portion into containers for up to 2 to 3 months and thaw overnight in the fridge. Coconut milk sauces can look slightly separated after thawing; a slow reheat with steady stirring brings it back together.
Variations worth trying
- Lamb kofta Ground lamb swaps in at the same weight. The sauce needs no other change.
- Chicken meatballs Ground chicken works; simmer until the balls register 165°F and expect a milder, lighter pot.
- Turn the heat up Double the cayenne, or drop in a sliced green chile with the crushed tomatoes.
- Egg-free batch Leave out the egg and add another tablespoon of almond flour. The balls roll slightly softer but hold.
Frequently asked questions
Why squeeze the grated onion dry?
Onion water thins the meat mixture and the balls lose their grip while they simmer. Squeezed dry, the onion adds flavor without loosening the bind.
Can I make the meatballs ahead?
Shape them up to a day ahead and keep them covered in the fridge. Brown them straight from the cold, adding a minute per side.
My sauce looks oily on top. Is that wrong?
A little oil beading at the edges is the signal the masala cooked long enough. Pooling on top usually means the coconut milk boiled hard; lower the heat and stir it back in.
How spicy is this?
Half a teaspoon of cayenne across sixteen meatballs lands at a steady warmth, not a burn. The coconut milk softens it further.
What can I serve alongside?
Cauliflower rice is the usual base and keeps the meal near the listed 6.3 net carbs. Warm roasted vegetables work too.
Related keto recipes
As an Amazon Associate and affiliate partner, Keto Food Ideas earns from qualifying purchases at no additional cost to you. Nutritional values are estimates. Recipes are developed with AI assistance and reviewed by our editors before publishing.
← More Lunch recipes · Home