This kefta tajine is a delicious combination of warmly spiced meatballs cooked in a flavorful tomato sauce with optional egg in there too. This Moroccan classic is easy to make, comforting and packed with flavor.

This post may contain affiliate links, where we earn from qualifying purchases. See more details in the policy page.
There's something about the humble meatball that can be so comforting, whatever the season. Whether more summery Greek keftedes, or more wintery Swedish köttbullar, there's a surprising range in what goes in them and how you serve them.
These Moroccan meatballs are definitely up there as a favorite for me because of their wonderful flavors. But despite their aromatic depth, you don't need a huge list of ingredients, and they're relatively quick to make.

Kefta origins
Kefta is a regional Arabic variation of "kofta" - you'll also find "kafta" and "kufta". The name originates from Persian "kūftan" which means to beaten or pound (referring to the meat).
Kofta are often considered as the oldest form of meatball (though Chinese Lion's Head also may claim that title). You'll find recipes for kofta in Arabic cookbooks from the 10th century, but believed to be much older.
Kofta spread through trade routes and empires in the region, reaching across North Africa, Turkey (called köfte) the Balkans (cevapi), and a bit later South Asia. The flavors and shape changed as they spread, with some served in rich sauces, other more kebabs on skewers, and much in between.
In Morocco, you'll find both grilled kefta as well as others in a sauce, as here. The name "kefta mkaoura" (or mkawra) means meat rolled, shaped into balls. This specific dish is often called kefta tagine because of how it's cooked.

What is a tagine, and do you need one?
A tagine (or tajine) is a type of round ceramic or clay dish with a conical lid that is commonly used in Moroccan cooking. The shape of the lid aids moisture retention. This is key since many of the dishes cooked in it are slow cooked braises or stews.
The name is often used for the dishes cooked using the dish, at least when translated. Others worth trying include chicken tagine with preserved lemons and olives and mrouzia, honey lamb tagine. And while a tagine will be particularly good at giving a good end result, you can use other dishes as well. For many of the stew-like dishes, a cast iron or similar Dutch oven works well.
For this meatball dish, simply a deep skillet/frying pan with a lid works just fine, or a braiser especially for a larger quantity. You ideally want the meatballs all in one layer with a bit of space for the sauce around them. And the lid is key as the meatballs cook in the sauce, so it helps keep the heat in.

Tips for making this dish
As mentioned, this dish is relatively easy but a couple things to note that can make it a little easier and come out it's best:
- You can use fresh tomatoes or canned tomatoes for this. I'd suggest fresh if you can get good ones, and grate them, otherwise use canned and mash them to break them up, as needed.
- Let the sauce simmer as you prepare the meatballs. The sauce needs time to cook down, and rolling the meatballs can take a few minutes. Since the meatballs go in a little later, it's an easy way to make good use of the time.
- Vary the meat to taste. Beef or lamb, or a combination of the two, are the most common here and work well. I particularly like lamb. But you could use turkey or chicken, for example, the flavor will just be a little different.
- Keep the meatballs small. It might be tempting to make them larger, but the meatballs are small in this dish - about the size of a grape. This means they cook quickly and are easy to eat.
- Cook the meatballs in the sauce, in a single layer. While many other meatball dishes brown them first, you honestly don't need to here. There's enough delicious flavor going on already and cooking in the sauce is much more efficient.
- Spice it up, if you like! Both the meatballs and the sauce have a delicious combination of warm spices and fresh herbs. But you can add a little heat as well, if you like, by adding a little cayenne pepper or chili to the sauce.
- Optionally add egg at the end. While you don't have to, it's pretty common to serve this with egg poached in the sauce at the end. It definitely adds to the dish, but it's also delicious without.
While there is a little prep chopping herbs and rolling meatballs, this is a relatively easy dish to make. And it's easy to scale up or down to suit, too.

Serving and storing
This is most typically served with Moroccan bread to scoop up all that tasty sauce. You can also serve it with couscous. While far from traditional, you could also serve it with other sides like rice or mashed potato which would also soak up the sauce.
Another great thing about this dish is it works well to make ahead or cook in batches. The cooked dish (without egg added) stores well in the fridge or can be frozen for longer storage. Then, simply defrost and warm on the stove when ready to use. If the sauce gets a little too thick, you can add a splash of water or stock to help, though it's unlikely you'd need to.
This kefta tagine is such a great combination of deliciously spiced little meatballs in the bright tomato sauce. It's comforting yet doesn't feel heavy, and while homey, it's also so full of flavor that it feels special. Well worth enjoying any excuse.

Try these other Moroccan favorites:
- Loubia, Moroccan stewed white beans in a tasty tomato-based sauce.
- Harira, a tasty soup/stew with chickpeas and lentils in a warmly spiced sauce.
- Baghrir, Moroccan semolina pancakes with lots of holes to hold honey or other toppings.
- Plus get more main dish recipes and North African recipes in the archives.
Kefta tagine (Moroccan meatballs in tomato sauce)
Ingredients
For sauce
- 28 oz tomatoes fresh or canned, see notes
- 2 tablespoon cilantro chopped volume
- 2 tablespoon parsley chopped volume
- ½ medium onion
- 2 cloves garlic
- 2 tablespoon olive oil or a little more, as needed
- 1 teaspoon paprika
- 1 teaspoon cumin
- 1 teaspoon salt or a little less, to taste
- ¼ teaspoon black pepper
- ¼ teaspoon cinnamon or a little more, to taste
For meatballs
- 2 tablespoon cilantro chopped volume, or a little more
- 2 tablespoon parsley chopped volume, or a little more
- ½ medium onion
- 1 lb ground lamb lamb mince, or use beef or a mix of both
- 1 teaspoon paprika
- 1 teaspoon cumin
- 1 teaspoon salt
- ¼ teaspoon black pepper
- ¼ teaspoon turmeric
To finish, optional
- 4 eggs (ie one per person)
Instructions
For sauce
- If using fresh tomatoes, cut them in half cross-ways (ie not top to bottom) and grate them into a shallow dish/bowl, holding the base/top and discarding the skin. If using canned, crush them if not already crushed and remove any tough stem pieces or skins.
- Finely chop the cilantro and parsley and then measure out (I usually chop for the meatballs at the same time then set those aside). Peel and finely dice the onion and garlic.
- Warm the olive oil over medium heat in a tagine or wide, relatively deep skillet/frying pan or braiser (wide enough to have the meatballs in a single layer, ideally, depending on quantity you are making). Add the onion and cook a few minutes until it is going translucent, reducing the heat and/or adding a little more oil if needed to avoid burning. Then add the garlic and cook a minute more.
- Add the rest of the sauce ingredients - tomatoes, cilantro, parsley, paprika, cumin, salt, pepper and cinnamon - and mix then bring to a simmer. Cover, reduce heat and cook for around 15 minutes covered, and another 15 uncovered (or part covered) at a simmer so that the flavors mingle, the tomatoes are completely soft and the sauce starts to thicken slightly.
For meatballs
- As the sauce is cooking, make the meatballs. Finely chop the cilantro and parsley and grate the onion. Place all in a bowl along with the ground lamb/beef, paprika, cumin, salt, pepper and turmeric. Mix well so that all the ingredients are well distributed - I find this is often easiest by hand.
- Take small pinches of the mixture and form round balls, roughly the size of a grape (around ½in/1 ¼cm diameter) and set aside. The exact size is not that important, but they should be relatively small and all around the same size so they cook evenly. Repeat until all the mixture has been formed into meatballs.
To finish off dish
- Once the sauce has had time to cook, add the meatballs into the sauce, pressing them in slightly. Try to get them all in a single layer with sauce between them and coming up the sides - the tops will likely stick out but that's fine. Cover and let the meatballs cook in the sauce. It will probably only take around 10 minutes. Check that they are cooked through, and try not to cook them more than they need.
- If adding eggs, create slight wells in the mixture by moving some meatballs closer together to create areas with only sauce and crack eggs into those spaces, one per person. Cover again and cook a few minutes to your preferred level of doneness. I generally cook only so the whites go translucent but the yolks are still soft, as the yolks are great when they mingle into the sauce. And bear in mind they will continue to cook a little after you remove from the heat.
- Once eggs are done, if you added (or after meatballs were done of not), remove from heat and serve. Goes well with some bread to mop up the sauce, or you could serve with couscous.
Notes
Nutrition (per serving)
See some of my favorite cooking tools and ingredients in the Caroline's Cooking Amazon store.
I've drawn on a few recipes in creating this, including this Taste of Maroc recipe.
Remember to pin for later!




Leave a Reply