Moroccan meatballs or kefta tagine are warmly spiced beef or lamb kefta simmered in a rich tomato sauce with aromatics, naturally sweet dates, and warm spices. It’s bold, flavorful, and surprisingly easy to make on a weeknight, even without a tagine.

What is Kefta Tagine?
Kefta tagine is a traditional Moroccan dish made with spiced ground meat (usually beef or lamb) shaped into small meatballs and simmered in a richly spiced tomato-based sauce. The meal is traditionally cooked and served in a tagine—a clay pot cooking vessel with a cone-like lid that allows steam to circulate as the dish cooks low and slow, resulting in a rich, concentrated flavor.
In this version, the spiced Moroccan meatballs gently cook in a large stainless steel skillet and simmer in a tomato sauce brimming with fresh garlic, warm spices, and olive oil. It’s perfect for scooping up with crusty bread or serving alongside fluffy couscous. Feel free to prepare the dish using a tagine (if you have one), a sauté pan, or even a Dutch oven, following a similar slow-cooking method of a traditional tagine.
Key Ingredients
If you’ve never made a Moroccan tagine at home, this easy meatball recipe is the perfect place to start. Here’s everything you need to make it.
- Ground Meat: I typically use ground beef or ground lamb for Moroccan meatballs, but ground turkey or ground chicken also work, especially if you prefer a lighter option.
- Spices: Season the meatball mixture with a warm blend of freshly ground cardamom, coriander, cumin, smoked paprika, cinnamon, kosher salt, and coarse black pepper.
- Egg: One egg is all you need to bind the meat mixture and help the meatballs hold their shape.
- Oil: Use olive oil to lightly sear the meatballs, plus a little olive oil to coat your hands when rolling them; it makes shaping easier and less sticky.
- Onions: I use yellow onion or Vidalia onion since they’re naturally sweet and blend perfectly into the tagine base.
- Garlic: I use three fresh garlic cloves, but measure with your heart.
- Ginger: Freshly grated ginger adds brightness and depth. You can use one teaspoon of ginger paste as a substitute, but it’s just not the same.
- Tomatoes: What is a Moroccan tagine without fresh tomatoes? While you can use diced canned tomatoes in a pinch, fresh tomatoes are the best option.
- Dates: Chopped dates are subtly sweet, complementing the savoriness, but you can replace them with golden raisins or cranberries if that’s what you have on hand.
- Chicken Broth: Adding a little chicken broth or chicken stock to the sauce helps keep the meatballs juicy while providing extra flavor.
- Herbs: Don’t forget to garnish with fresh herbs, such as parsley, cilantro, or mint leaves, before serving.
Additions and Substitutions
- Get your veggies in. Simmer the meatballs with vegetables—green beans, potatoes—to make it a complete, one-pan meal. You may need to increase the cooking time depending on what you choose to include.
- Experiment with mix-ins. Before sautéing the onions, bloom a tablespoon of tomato paste in the olive oil to enhance the color and intensify the flavor of this dish. Near the end of cooking, eggs are sometimes cracked right into the sauce and poached until they set, similar to Moroccan shakshuka, but with meatballs.
- Spice things up. Crank up the heat with a scoop of harissa paste or a pinch of red pepper flakes for a little extra heat.
How to Make Moroccan Meatballs
The full recipe with measurements is in the recipe card below.

Step 1: Combine ground beef, cardamom powder, coriander powder, ground cumin, paprika, salt, black pepper, and egg in a large mixing bowl. Knead the meatball ingredients with clean hands to combine, careful not to over mix. Cover and refrigerate for 30 minutes.

Step 2: Remove the meatball mixture from the fridge and roll it into 1-inch meatballs.

Step 3: Heat oil in a preheated large skillet over medium heat. Arrange the first batch of uncooked meatballs in a single layer in the pan. Cook for 3-5 minutes, turning frequently to brown on all sides.
Cooking Tip
Once seared, set the meatballs aside and cook the remaining meatballs in batches. They don’t need to cook all the way through since they’ll finish simmering in the sauce later.

Step 4: In the same pan, sauté the onions over medium heat until soft and translucent, about 5–10 minutes. Stir in the garlic, ginger, tomatoes, chopped dates, and chicken broth. Simmer for 5 minutes.

Step 5: Return the meatballs to the pan with the tomato puree and simmer over medium-low heat for 15-20 minutes until the flavors combine and the sauce thickens. Garnish with fresh parsley and mint, and enjoy!
Prep Tip
Leave the sauce chunky or process it with an immersion blender for a smoother consistency. You can also transfer the sauce to a blender in batches.

Expert Tips
- Refrigerate the meatball mixture. Chill the mixture in the fridge for 30 minutes before rolling to help the meatballs hold their shape while cooking.
- Sear the meatballs. Heat the meatballs in the pan to develop a golden brown sear and add extra flavor. Don’t worry about cooking them through since they will finish cooking in the sauce.
- Control the consistency of the sauce. If you prefer a smoother sauce, use an immersion blender to process the sauce ingredients before adding the homemade meatballs.
If you enjoy Moroccan meatball tagine, try more African-inspired recipes!

Serving Suggestions
Moroccan meatballs are the ultimate comfort food, often served family-style, straight from the tagine with couscous or bulgur and plenty of warm khobz—a traditional Moroccan flatbread—to scoop up every last bite.
If you’re craving something lighter, pair the meatballs with Greek yogurt, Moroccan carrot salad, or a simple cucumber tomato salad, such as Shirazi or Coban salatasi. And, of course, no Moroccan meal is complete without a glass of mint tea on the side.
What To Do With Leftovers
- Refrigerate: Store leftover Moroccan meatballs in an airtight container for 3-4 days. The flavors are even better the next day!
- Freeze: Let the dish cool, then transfer it to a freezer-safe container or bag. Kefta tagine freezes for 2-3 months.
- Thaw: Defrost the frozen meatballs and sauce in the refrigerator overnight.
- Reheat: Gently reheat the leftovers on the stovetop for the best results.
Frequently Asked Questions
Can I bake the meatballs instead?
Preheat the oven to 350°F (176°C). Prepare a rimmed baking sheet with parchment paper. Arrange the meatballs onto the baking sheet and cook them for 25-30 minutes, flipping them halfway through.
Once you bake the meatballs, follow the instructions for the sauce in the recipe card below.
Can I make this recipe ahead of time?
You can prepare the meatballs and sauce a day ahead; just keep them separate until you’re ready to cook. Then, allow them to simmer for 20 minutes before serving.
What is kefta?
In Moroccan cuisine, kefta refers to ground meat (usually beef or lamb) mixed with Moroccan spices and herbs, like parsley and cilantro.
More Meatball Recipes:

Moroccan Meatballs
- 1 pound ground beef
- 1 tablespoon green cardamom pods, greens removed and ground into a powder
- 1 tablespoon coriander powder
- 1 ½ teaspoon ground cumin
- 1½ teaspoon smoked paprika
- 1 teaspoon ground cinnamon
- 1 teaspoon kosher salt
- ½ teaspoon coarse black pepper
- 1 large egg
- ¼ cup olive oil
- 1 yellow onion, finely diced
- 3 garlic cloves, minced
- ½ -inch knob of ginger, minced
- 4-5 medium tomatoes, finely diced or a 15-ounce can of crushed tomatoes
- 4 dried dates, pitted and roughly chopped
- ½ cup chicken broth
- parsley leaves, chopped, to garnish
- mint leaves, chopped, to garnish
- Combine ground beef, cardamom powder, coriander powder, ground cumin, paprika, salt, black pepper, and egg in a large mixing bowl. Knead the meatball ingredients with clean hands to combine, careful not to over mix. Cover and refrigerate for 30 minutes.
- Remove the meatball mixture from the fridge and roll it into 1-inch meatballs.
- Heat oil in a preheated large skillet over medium heat. Arrange the first batch of uncooked meatballs in a single layer in the pan. Cook for 3-5 minutes, turning frequently to brown on all sides.Tip: Once seared, set the meatballs aside and cook the remaining meatballs in batches. They don’t need to cook all the way through since they’ll finish simmering in the sauce later.
- In the same pan, sauté the onions over medium heat until soft and translucent, about 5–10 minutes. Stir in the garlic, ginger, tomatoes, chopped dates, and chicken broth. Simmer for 5 minutes. Tip: Leave the sauce chunky or process it with an immersion blender for a smoother consistency. You can also transfer the sauce to a blender in batches.
- Return the meatballs to the pan with the tomato puree and simmer over medium-low heat for 15-20 minutes until the flavors combine and the sauce thickens. Garnish with fresh parsley and mint, and enjoy!
- Refrigerate the meatball mixture. Chill the mixture in the fridge for 30 minutes before rolling to help the meatballs hold their shape while cooking.
- Sear the meatballs. Heat the meatballs in the pan to develop a golden brown sear and add extra flavor. Don’t worry about cooking them through since they will finish cooking in the sauce.
- Control the consistency of the sauce. If you prefer a smoother sauce, use an immersion blender to process the sauce ingredients before adding the homemade meatballs.




Kathi
Thursday 9th of June 2022
Can not wait to make this recipe. 12 tomatoes adapted it for the slow cooker, so I will take your recipe and make it in the slow cooker. Love that you pureed the Roma tomatoes -it will make the gravy so much smoother. I will be doing the same. But, I will grate the onion into the ground beef as my family are not fans of onion chunks. Thank you so much for posting this recipe. It's so much better than the one 12 tomatoes posted.
Tressa Jamil
Thursday 9th of June 2022
Hey Kathy, I cannot wait to hear back from you once you’ve made it! I do have a suggestion for you regarding the onions. I often do this when preparing Indian curries, but you can actually cook down the onions and tomatoes as is and then use an immersion blender or food processor to smooth it out just before you return the meatballs to the mixture; that way you don’t have to take the extra step of grating the onion. It’s completely up to you though. Again, I can’t wait to hear what you and your family think of the meal.