
Moroccan Kefta Tagine with Eggs
Spiced beef meatballs simmered in a cumin-paprika tomato sauce, finished with eggs poached right in the pan. Serve it straight from the skillet with crusty bread for scooping.
- Prep
- 25 min
- Cook
- 35 min
- Total
- 1 hr
- Makes
- 4 servings (about 24 small meatballs and 4–8 eggs)
Steps
Before you start
- Read the recipe through: the meatballs cook in the sauce, so the sauce must be simmering before they go in.
- Use a wide, lidded 12-inch skillet or a tagine base that can go on the stove so the eggs have room to sit in the sauce.
- Chop the onion, garlic, and herbs before you start so you can move quickly once the pan is hot.
- Wash your hands after handling the raw beef and before touching other ingredients.
Mix the kefta
- In a large bowl, combine the ground beef, grated onion (squeezed dry), parsley, 1/4 cup cilantro, 1 tsp cumin, 1 tsp paprika, 3/4 tsp salt, and the black pepper.
- Mix with your hands for about 1 minute, just until evenly combined and slightly sticky.
+ Show details− Hide details
Ready when: Mixture looks uniform with flecks of herbs and holds together when pressed.
Tip: Do not overmix or the meatballs turn dense and rubbery.
Shape the meatballs
- Roll the mixture into about 24 balls, each roughly 1 inch (2.5 cm) across, using about 1 tablespoon of meat each.
- Place them on a plate.
- Wet your hands lightly if the meat sticks.
+ Show details− Hide details
Ready when: Balls are smooth and similar in size so they cook evenly.
Soften the onion
- Heat the olive oil in the 12-inch skillet over medium heat.
- Add the diced onion and a pinch of the sauce salt.
- Cook, stirring often, for 5 to 6 minutes.
+ Show details− Hide details
Ready when: Onion is soft, translucent, and just starting to turn pale gold.
Bloom the spices
- Add the garlic, 1 1/2 tsp cumin, 1 1/2 tsp paprika, ginger, and cayenne if using.
- Stir constantly for 45 to 60 seconds.
+ Show details− Hide details
Ready when: The mixture smells strongly fragrant and looks like a thick, brick-red paste.
Tip: Don't let the garlic brown or the sauce will taste bitter; add a splash of water if it sticks.
Build the sauce
- Pour in the crushed tomatoes with their juices and the water.
- Stir in the remaining salt (about 1/2 tsp) and the sugar.
- Raise the heat to bring it to a bubble, then reduce so it simmers gently for 8 minutes.
+ Show details− Hide details
Ready when: Sauce is slightly thickened and no longer smells raw or sharp.
Simmer the meatballs
- Nestle the meatballs into the sauce in a single layer, spooning a little sauce over the tops.
- Cover and simmer gently for 15 minutes, gently turning the meatballs once halfway through.
+ Show details− Hide details
Ready when: Meatballs are firm and an instant-read thermometer in the center of one reads 160°F (71°C).
Tip: Keep the simmer gentle, with small bubbles only, so the meatballs don't break apart.
Make egg wells
- Uncover and check the sauce.
- It should be thick enough to mound on a spoon; if it's thin, simmer uncovered 3 to 5 minutes.
- Use the back of a spoon to make 6 small hollows between the meatballs.
- Season the sauce with salt if needed.
+ Show details− Hide details
Ready when: Sauce is thick and holds the hollows without flooding.
Poach the eggs
- Slide one egg into each hollow and sprinkle each with a pinch of salt.
- Cover and cook over medium-low heat for 5 to 7 minutes, until the whites are completely opaque and set.
+ Show details− Hide details
Ready when: Whites are opaque and firm; yolks are still glossy and jiggle slightly for runny (cook 8 to 9 minutes for firm yolks).
Tip: Check at 5 minutes; the eggs keep cooking from residual heat after you turn off the stove.
Garnish and serve
- Scatter the 2 tbsp cilantro over the top.
- Bring the skillet to the table and serve right away with crusty bread for scooping the sauce and breaking the yolks.
Good to know
Tips
- Squeeze the grated onion in a clean towel or by hand so the meatballs aren't wet and don't fall apart.
- Keep the simmer gentle; a hard boil toughens the meatballs and breaks them up.
- Crack each egg into a small cup first so you can slide it in without breaking the yolk or dropping shell in the sauce.
- Serve in the pan: the sauce keeps hot and the eggs stay warm.
Make ahead
"Make the meatballs and sauce (through step 6) up to 2 days ahead and refrigerate. Reheat gently in the skillet until simmering, then add the eggs and finish as written."
Storage & reheating
"Best eaten fresh. Refrigerate leftover meatballs and sauce (without eggs) in an airtight container up to 3 days; cooked eggs keep up to 2 days but get firmer. Freeze meatballs and sauce without eggs up to 3 months; thaw overnight in the fridge and reheat gently over medium-low heat until steaming hot, adding a splash of water if thick."
Substitutions
- ground beef (80% lean) → ground lamb or a half-beef, half-lamb mix. Lamb is traditional and gives a richer flavor; cook to the same 160°F (71°C).
- whole peeled tomatoes → 2 lb (900 g) ripe tomatoes, grated or chopped. Simmer an extra 5 to 10 minutes to reduce the sauce.
- fresh cilantro → additional flat-leaf parsley. Use if you dislike cilantro; flavor will be milder.
- cayenne pepper → 1/2 tsp harissa paste. Stir in with the spices for heat with extra depth.
More meatballs
See all →Find more like this
- Meal
- Dinner
- Cuisine
- Moroccan
- Main ingredient
- Ground BeefEggsTomatoes
- Diet
- Dairy-FreeHalal
- Method
- Stovetop
- Quick & Easy
- Easy





