Moroccan Kefta Tagine (Meatballs in Tomato Sauce with Eggs)
A bubbling pan of spiced tomato sauce, soft meatballs, and golden eggs — this Moroccan Kefta Tagine (also called Kefta Mkaouara) is one of those dishes that instantly pulls you in. Juicy beef and lamb meatballs simmer in a fragrant tomato gravy until tender, then a few eggs are cracked in and gently poached until just set — the yolks rich and creamy, the sauce deeply spiced with cumin, paprika, cinnamon, and turmeric. It’s warm, comforting, and perfect for scooping up with flatbread or pita.

The first time I had this Moroccan dish wasn’t actually in Morocco — it was in Istanbul, of all places. It was one of the many incredible dishes laid out on a long table, and what caught my eye were those eggs — perfectly poached, slightly runny, nestled between spiced meatballs in tomato sauce. It reminded me so much of Shakshuka, but heartier, meatier, and somehow creamier because of the yolks melting into the sauce.
Later, when I lived in Singapore, I used to make it whenever I craved something comforting yet full of flavor — my “creamy meatballs without cream,” as I used to call it. Every time I crack those eggs into the bubbling sauce, it takes me right back to my travels and that same sense of fascination.
💫 Why You’ll Love This Recipe
- One-pan wonder: meatballs, sauce, and eggs all cook together.
- Big Moroccan flavor: cumin, paprika, cinnamon, ginger, and turmeric build deep warmth.
- Versatile: serve it with bread, couscous, or even rice.
- Visually stunning: that runny egg over the spiced tomato sauce? Unbeatable.

🥩 Ingredients & Substitutes
- Ground beef and lamb: a mix keeps the kefta juicy and flavorful. You can also use only beef for a leaner option.
- Grated onion & garlic: add moisture and savory depth.
- Semolina: classic Moroccan binder that gives a soft texture. You can also use breadcrumbs if needed.
- Spices: paprika, cumin, cinnamon, cayenne, turmeric, and ginger — the signature Moroccan profile.
- Onion & garlic: sauté until golden to build a sweet base.
- Tomato paste & crushed tomatoes: rich umami and body.
- Broth (chicken or vegetable): thins the sauce without diluting flavor.
- Parsley: adds fresh lift at the end.
- Spices: same as the meatballs for a layered, cohesive taste.
- Eggs: cracked directly into the sauce for gentle poaching — the signature move!

🍳 Step-by-step: Moroccan Kefta Tagine (with Eggs)
Make Kofta balls
- Mix the kefta – In a bowl, combine ground beef + lamb with grated onion, garlic, semolina, and spices. Mix gently with your hands just until it holds together. Overmixing = tough meatballs.


- Shape – Roll small, bite-sized meatballs (about 1 inch / 2.5 cm). Set aside while you start the sauce so they firm up a touch.
Make the tomato sauce
- Sauté the base – Warm olive oil in a wide pan, Dutch oven, or tagine over medium heat. Then, cook the chopped onion until soft and lightly golden, and add garlic for the last 30 seconds.


- Bloom the spices – Stir in the tomato paste and your spice blend (paprika, cumin, cinnamon, turmeric, ginger, and a pinch of cayenne). Cook 60–90 seconds until the paste darkens and smells sweet-savory. This step builds depth—don’t skip it.
- Build the sauce – Add crushed tomatoes and a splash of broth. Season with salt and pepper. Bring to a gentle simmer; the sauce should look glossy and slightly thick, not watery.


Assemble the tagine
- Nestle the meatballs – Lower the meatballs into the simmering sauce. Don’t stir immediately—give them 2–3 minutes to set their shape—then spoon a little sauce over the tops.
- Simmer until tender – Cover and cook on low heat until the meatballs are cooked through and juicy (about 20 minutes). If the sauce thickens too much, add a splash of broth; if it’s thin, simmer uncovered for a few minutes.


- Add the eggs – Make small wells in the sauce and crack in the eggs. Sprinkle a pinch of salt on each. Then cover and poach gently until the whites set but the yolks are still soft (about 3–4 minutes). Watch closely—overcooking happens fast.
- Finish & serve – Scatter over chopped parsley (and a drizzle of olive oil if you like). Serve right away with warm flatbread or pita to scoop up the sauce.

💡 Tips for Success
- Use fresh spices — the aroma defines this dish.
- Let the sauce reduce slightly before adding the meatballs.
- Crack eggs gently so yolks stay intact.
- For stovetop tagine: keep the heat medium-low to avoid scorching.
- Serve immediately; overcooked eggs lose their charm.

🧯 Troubleshooting
| Problem | Cause | Fix |
|---|---|---|
| Meatballs falling apart | Over-mixed or too soft | Chill 15 min before cooking; add more semolina |
| Sauce too thin | Too much broth or not simmered long enough | Simmer uncovered 5–10 min |
| Eggs overcooked | Left on the heat too long | Remove from heat when whites set; carryover cooking finishes them |
| Sauce too spicy | Heavy hand with cayenne | Add a spoon of yogurt or sugar to balance |
| Sauce too tangy | Tomato paste is not caramelized | Cook the paste longer before adding liquid |
No posts
Frequently asked questions
Yes. It’ll be slightly leaner, so add a drizzle of olive oil for richness.
No. A deep skillet or Dutch oven works beautifully.
Of course, but they’re what make this tagine so special.
The sauce and meatballs can be prepared a day early. Add eggs fresh before serving.
Cut the cayenne in half and serve with yogurt or flatbread.

Moroccan Kefta Tagine Recipe (Meatballs with Eggs)
Tender Moroccan meatballs simmered in a spiced tomato sauce and finished with poached eggs! This authentic kefta tagine (also called kefta mkaouara) is simple, fragrant, and full of North African flavor. Perfect with warm flatbread to scoop up every drop!
Video
Ingredients
- 250 g (½ lb) Ground beef
- 250 g (½ lb) Ground lamb
- 1 med (¼ cup) Onion finely grated
- 2 cloves Garlic minced
- 1 – 2 Tbsp Semolina (or breadcrumbs)
- 1 tsp Paprika
- ½ tsp Ground cumin
- ¼ tsp Ground cinnamon
- ¼ tsp Turmeric
- ¼ tsp Cayenne (adjust to taste)
- ½ tsp Ground ginger
- Salt and pepper to taste
- 2 Tbsp Olive oil
- 1 med Onion finely chopped
- 2 large Garlic cloves minced
- 1 Tbsp tomato paste
- 400 g (14 oz) Crushed tomatoes
- ½ cup Chicken or vegetable broth (more as needed)
- ½ tsp Paprika
- ½ tsp Ground cumin
- ¼ tsp Turmeric
- ¼ tsp Ground ginger
- Salt and pepper to taste
- 4 large Eggs
- 2 Tbsp Chopped fresh parsley (plus extra for garnish)
Method
- Prepare the meatballs – In a large mixing bowl, combine ground beef, lamb, grated onion, minced garlic, semolina, and all the spices. Season with salt and pepper. Use your hands to mix gently — just until the ingredients come together. Don’t knead or squeeze the meat, or the kefta will turn dense. Form small balls, about 1 inch (2.5 cm) wide. Place them on a plate, cover them, and set them aside while you start the sauce.250 g Ground beef, 250 g Ground lamb, 1 med Onion, 2 cloves Garlic, 1 – 2 Tbsp Semolina , 1 tsp Paprika, ½ tsp Ground cumin, ¼ tsp Ground cinnamon, ¼ tsp Turmeric, ¼ tsp Cayenne , ½ tsp Ground ginger, Salt and pepper to taste
- Make the base sauce – Heat olive oil in a large, wide skillet or tagine over medium heat. Add the chopped onion and garlic, sauté for about 3–4 minutes until soft and fragrant.2 Tbsp Olive oil, 1 med Onion, 2 large Garlic cloves
- Build the flavor – Add all the dry spices (paprika, cumin, turmeric, ginger) and stir in the tomato paste.Cook for 1–2 minutes, stirring constantly, until the tomato paste darkens in color — this step develops depth and sweetness.½ tsp Paprika, ½ tsp Ground cumin, ¼ tsp Turmeric, ¼ tsp Ground ginger, Salt and pepper to taste, 1 Tbsp tomato paste
- Add liquids and simmer – Pour in the crushed tomatoes and broth. Season with salt and pepper, stir well, and bring to a gentle boil. Reduce the heat to low, cover the pan partially, and let it simmer for about 5–7 minutes. The sauce should start to thicken slightly.400 g Crushed tomatoes, ½ cup Chicken or vegetable broth
- Add the meatballs – Gently drop the prepared meatballs into the simmering sauce one by one. Try not to stir right away — give them 2–3 minutes to set their shape. Once they’ve firmed a bit, use a spoon to nudge them gently so they’re covered in sauce. Cover and simmer over low heat for about 20 minutes. The meatballs will release some of their juices and make the sauce rich and flavorful.
- Check seasoning and consistency – Uncover the pan and taste the sauce. Adjust the salt, pepper, or other spices as needed. If the sauce is too thick, add a splash of broth; if it’s too thin, simmer uncovered for a few more minutes.
- Add the eggs – Use the back of a spoon to make four small wells between the meatballs. Crack one egg into each well. Sprinkle a little salt over the eggs. Cover and cook on low heat for about 3–4 minutes — just until the whites are set but the yolks are still soft. Keep an eye on them; they go from perfect to overcooked quickly.4 large Eggs
- Garnish and serve – Remove from heat immediately once the eggs look set but slightly jiggly on top. Sprinkle chopped parsley over everything and drizzle a touch of olive oil if you like. Serve hot, straight from the pan, with warm Moroccan flatbread (khobz) or pita for dipping and scooping.2 Tbsp Chopped fresh parsley (plus extra for garnish)
Notes
- If you’re new to poaching eggs in sauce, cook with the lid slightly ajar — it slows the cooking so you don’t overdo the yolks.
- Keep meatballs bite-sized so they cook evenly without breaking.
- Don’t skip caramelizing the tomato paste — it’s what makes the sauce taste like it simmered all day.
- The tagine or pan should always stay on medium-low heat; rushing it burns the spices.
Equipment you will need
Nutrition
Tried this recipe?
Mention @veenaazmanov_kitchen or tag #veenaazmanovkitchen!Did you LIKE this recipe? Save it for later on Pinterest.
Follow on YouTube, Facebook, Twitter, Instagram or TikTok
Subscribe to receive new recipes right to your inbox.









Made this tonight and the flavors were amazing! Quick question — when adding the eggs at the end, do you keep the pan covered or uncovered? I wasn’t sure and didn’t want to overcook them.
So glad you enjoyed it! I usually keep the pan loosely covered — it helps the whites set gently without overcooking the yolks. If you prefer softer yolks, you can even leave it slightly uncovered and keep a close eye on them.
This turned out so good! I didn’t have fresh parsley so I used cilantro and added a pinch of cinnamon — honestly one of the best tagines I’ve made at home.
That sounds fantastic — cilantro works beautifully here and I love the addition of cinnamon, it really brings out that warm Moroccan flavor. Thanks for sharing your twist!