Soups & Stews
This authentic beef keema recipe brings the rich, aromatic flavors of traditional South Asian cuisine straight to your kitchen. The secret lies in marinating ground beef with yogurt and a blend of warm spices—cinnamon, cardamom, and cloves—that infuse every bite with deep, complex flavor. I've perfected this version after years of testing, ensuring the meat stays tender while absorbing the spiced marinade completely.
The cooking process begins with slow browning of the beef to develop a deep, caramelized crust, followed by simmering in a fragrant tomato-based gravy. This method creates a dish that's both hearty and elegant, with the perfect balance of spices and textures. The yogurt marinade not only tenderizes the meat but also adds a subtle tang that cuts through the richness of the spices.
What sets this recipe apart is the attention to traditional techniques—like blooming whole spices in ghee and simmering the keema until the sauce thickens just enough to coat the meat. The result is a dish that's restaurant-quality at home, with each forkful delivering layers of flavor that transport you to a bustling South Asian kitchen.
Serve this authentic beef keema with warm naan, basmati rice, or crusty bread to soak up every last bit of the fragrant, spiced gravy. The leftovers reheat beautifully, making it a perfect meal for busy weeknights or special gatherings. Let's get cooking!
Ingredients for authentic beef keema
Traditional South Asian spices meet tender ground beef in this restaurant-quality keema.
| Ingredient | Amount | Notes |
|---|---|---|
| Ground Beef 🥩 | 1 ½ lb | Lean to medium-fat ratio preferred |
| Plain Yogurt 🥛 | 1 cup | Full-fat for best flavor |
| Yellow Onion 🧅 | 1 whole | Medium-sized, finely chopped |
| Ripe Tomatoes 🍅 | 2 medium | Peeled and chopped (or 1 can diced tomatoes) |
| Ghee 🫒 | 3 tbsp | For authentic flavor and browning |
| Ginger (fresh) 🌿 | 1 inch | Peeled and grated (about 1 tbsp) |
| Garlic Cloves 🧄 | 6 cloves | Minced for marinade |
| Ground Cumin 🌿 | 1 tsp | Toasted for deeper flavor |
| Ground Coriander 🌶️ | 1 tsp | Freshly ground preferred |
| Cinnamon Powder 🌿 | ½ tsp | Ceylon cinnamon for best quality |
| Cardamom Pods 🌿 | 4 whole | Lightly crushed for aroma |
| Cloves 🌶️ | 2 whole | Lightly crushed for warmth |
| Black Salt (Kala Namak) 🧂 | ¼ tsp | For authentic sulfuric aroma |
| Salt 🧂 | 1 tsp | Adjust to taste |
| Fresh Cilantro 🌿 | ¼ cup | Chopped for garnish |
The ground beef is the foundation—medium-fat ratio ensures juiciness without greasiness. Look for 80/20 blend at your butcher or grocery store's meat counter. The yogurt should be full-fat plain yogurt (Greek or regular), not low-fat or flavored. For the tomatoes, I prefer ripe vine tomatoes when in season, but canned diced tomatoes work perfectly when fresh aren't available. The key spices—cumin, coriander, cinnamon, cardamom, and cloves—should be freshly ground or whole for maximum aroma. Penzeys or local Indian markets carry the best quality whole spices.
No fresh ginger? Substitute 1 tbsp ground ginger, but fresh is ideal for that bright, zesty kick. Running short on tomatoes? Tomato paste (1 tbsp) plus 1/4 cup water works in a pinch. The black salt (kala namak) gives that signature eggy aroma—skip it if unavailable, but the dish will still be delicious. For the ghee, clarified butter is essential—don't substitute regular butter, which will burn. If you can't find Ceylon cinnamon, regular cinnamon at half the amount will work. The cardamom and cloves should be lightly crushed—don't grind them into powder, as this releases bitterness.
This dish tastes even better the next day as flavors meld. Store leftovers in an airtight container in the fridge for up to 4 days or freeze for 3 months. The yogurt marinade can be prepped 1 day ahead, keeping the beef and marinade separate until ready to cook. For reheating, add a splash of water or milk to prevent drying out. The spices lose potency over time, so replace whole spices every 6 months and ground spices every 3 months for optimal flavor.
Why You'll Love This Recipe
- One-Pot Magic: I swear by this recipe—just brown the beef, toss in onions and tomatoes, and let the ghee and yogurt work their magic. No chopping, no fuss, just simmer until it’s tender and fragrant. (Yes, even on a Tuesday night when you’re exhausted.)
- Rich & Tangy Depth: The yogurt keeps it creamy while the ghee adds that buttery richness—like a hug in a bowl. The tomatoes soften into a jammy sweetness that balances the spice, and honestly? That first bite is pure satisfaction.
- Weeknight & Meal Prep Hero: Make a big batch on Sunday, and you’ve got lunch or dinner covered for days. It reheats beautifully—better than takeout, and way cheaper. My kids ask for it all week, even when I’m tired of it.
- Budget-Friendly Protein Power: Ground beef stretches far here, and the yogurt and ghee make it feel special without breaking the bank. Between us, this is how I feed a family of four for under $15. Leftovers? Even better the next day.
Step-by-step instructions for authentic beef keema
Transform simple ingredients into restaurant-quality keema using this time-tested method.
Marinate the Ground Beef in Yogurt and Spices
In a large mixing bowl, combine the 1.5 lb ground beef with the 1 cup plain yogurt. Using your hands, gently mix until the beef is evenly coated and the yogurt is fully incorporated. This step ensures tender meat and authentic flavor development.
Add the 1 whole yellow onion (finely chopped), 1 inch fresh ginger (peeled and grated), 6 garlic cloves (minced), 1 tsp ground cumin, 1 tsp ground coriander, 0.5 tsp cinnamon powder, 4 whole cardamom pods (lightly crushed), 2 whole cloves (lightly crushed), 0.25 tsp black salt (kala namak), and 1 tsp salt. Mix thoroughly until all spices are evenly distributed throughout the beef mixture. Cover and refrigerate for at least 4 hours or overnight—this marinating time is crucial for deep flavor infusion and tender texture.
Cook the Tomato Base
Heat 3 tbsp ghee in a heavy-bottomed pot over medium heat. Add the marinated beef mixture and cook, stirring occasionally, until the raw smell disappears and the meat begins to brown—about 10-12 minutes. This step develops the rich, caramelized flavors that define authentic keema.
While the beef cooks, add the 2 medium ripe tomatoes (peeled and chopped) to the pot. Stir well to combine, then reduce heat to low. Let the tomatoes cook down for 10 minutes, stirring occasionally, until they form a thick, glossy sauce. The mixture should be moist but not soupy—this is the foundation of your keema. If it becomes too dry, add 1-2 tablespoons of water to maintain the right consistency.
Simmer to Perfection
Once the tomato mixture has thickened, increase the heat to medium-low and let the keema simmer uncovered for 30-40 minutes. Stir occasionally to prevent sticking and ensure even cooking. The beef should become fork-tender, and the spices should meld into a fragrant, aromatic blend. You'll notice the mixture darkens slightly as it cooks—this indicates the spices are properly caramelizing and infusing into the meat.
Taste the keema and adjust seasoning if needed. If it requires more salt, add it gradually—you can always add more, but you can't remove excess. The keema should be well-seasoned with a balance of spicy, tangy, and savory flavors. Once fully cooked, remove from heat and let it rest for 5 minutes before serving. This resting period allows the flavors to fully develop and the meat to reabsorb any juices.
Garnish and Serve
Transfer the keema to a serving dish and garnish with 0.25 cup fresh cilantro, chopped finely. The cilantro adds a fresh, bright contrast to the rich, spiced beef. Serve immediately with traditional accompaniments like naan, roti, or steamed basmati rice to complete the authentic experience.
For the best results, serve the keema while still warm. The flavors continue to deepen as it sits, so don't wait too long. Each bite should deliver a harmonious blend of tender beef, aromatic spices, and tangy yogurt—this is the hallmark of a well-made keema. Enjoy your homemade creation, which rivals any restaurant version!
Pro Tips For Making Authentic Beef Keema
- Cook Ghee Slow: I learned this the hard way—rushing the ghee at the start makes the onions burn before they caramelize properly. Let it heat until it shimmers just before smoking (about 3-4 minutes on medium-low), then add the onions. The extra patience builds deeper flavor, and you’ll taste the difference in every bite.
- Blanch Tomatoes First: Skip the raw tomato mess by blanching them in boiling water for 30 seconds, then shocking in ice water. This removes skins effortlessly and softens them just enough to break down smoothly in the keema—no chunky surprises. (Yes, even if you’re impatient like me.)
- Salt the Yogurt: Add a pinch of salt to the yogurt while mixing it with the raw meat. It stops the yogurt from curdling when it hits the hot pan later, and the meat stays juicier. I was skeptical until I tried it—now I never skip it.
- Brown the Meat Twice: First, cook the raw meat on high heat until it loses its pink entirely. Then, after adding the yogurt-onion mix, spread it out again on the pan for 2-3 minutes to crisp the edges. This double-sear adds texture and prevents a mushy final dish. (Does it look weird? Yes. Does it work? Every single time.)
Dietary considerations for this recipe
Vegetarian Adaptation
Swap the beef for 1.5 lb crumbled firm tofu or 1.5 lb extra-firm chickpeas (mashed slightly for texture). For tofu, press it first to remove excess water, then marinate in the yogurt-spice blend for 6-8 hours to absorb flavors. Chickpeas add a hearty texture similar to beef—just ensure they're well-drained before cooking. Use 1 tbsp soy sauce in the marinade to mimic umami depth. 🌱
Gluten-Free Considerations
This recipe is naturally gluten-free, but double-check your spices for hidden additives—some pre-ground spice blends contain anti-caking agents with gluten. Opt for certified gluten-free brands like Badia or Spicewalla for whole spices. The ghee, yogurt, and other ingredients are safe, but always verify labels if you have celiac disease. Serve with gluten-free naan or rice to complete the meal.
Dairy-Free Adjustments
Replace the 1 cup plain yogurt with 1 cup unsweetened coconut yogurt or cashew yogurt for a dairy-free marinade. Use vegetable oil or coconut oil instead of ghee—heat it to 350°F to mimic ghee's flavor. The dish will still develop rich, aromatic notes, though the texture may be slightly lighter. Garnish with extra fresh cilantro to brighten the flavors.
Spice Sensitivity Options
For mild heat, reduce the black salt (kala namak) to 0.125 tsp and omit ½ tsp of the ground coriander. If you're sensitive to cardamom or cloves, replace them with ¼ tsp ground fennel seeds for a sweeter, more aromatic note. The dish will still be flavorful but gentler on sensitive palates. Always taste as you go—adjust gradually!
Protein Swaps
Try 1.5 lb ground lamb for a richer, gamier flavor—just reduce cooking time to 25-30 minutes to avoid overcooking. For a seafood twist, use 1.5 lb finely chopped shrimp (cook for 5-7 minutes only) and skip the marinating step. Both alternatives work beautifully while keeping the dish's signature spiced gravy. 🍤
Nutrition facts
Frequently asked questions
Why does the yogurt marinade make such a difference in authentic beef keema?
The yogurt marinade serves three key purposes: it tenderizes the beef by breaking down proteins, adds a subtle tang that balances the spices, and helps create a rich, velvety texture in the final dish. The acidity in yogurt also helps develop deeper flavors during cooking. For best results, always use full-fat plain yogurt—it coats the meat better and adds richness.
Can I make this recipe without ghee? What's the best substitute?
While ghee is traditional for its rich flavor and high smoke point, you can substitute with clarified butter or vegetable oil (like avocado or coconut oil). For a dairy-free option, use neutral oil and heat it to 350°F to mimic ghee's flavor. Just note that ghee adds that signature caramelized depth that's hard to replicate.
How do I know when the keema is fully cooked? What if it's still raw in spots?
The keema is done when the beef is fork-tender (no pink remains) and the sauce has thickened to coat the meat. If you find raw spots, return the pot to medium-low heat and cook for another 5-10 minutes, stirring occasionally. Never rush this step—undercooked meat can ruin the dish. A good test is to taste a small portion: the spices should be fully developed, not harsh.
What's the secret to getting the perfect spice balance in beef keema?
The key is blooming the whole spices (cardamom, cloves) in ghee first to release their aromas, then balancing them with the ground spices. Start with the recommended amounts in the recipe, taste as you go, and adjust gradually. The yogurt marinade also helps mellow the spices. For extra depth, add a pinch of black salt (kala namak)—it adds a unique sulfuric note that's signature to authentic keema.
Can I make this recipe in a slow cooker or Instant Pot?
Yes! For a slow cooker, brown the beef first, then transfer everything to the pot and cook on low for 4-5 hours. For an Instant Pot, sauté the beef and spices, then cook on high pressure for 15 minutes (natural release). Both methods work, but the stovetop version gives you more control over the sauce consistency. The slow cooker version tends to be slightly more tender.
