Moroccan fish meatballs, or kefta hout, are one of those dishes that tastes like a lot more work than it is. You blitz white fish with herbs and warm spices, roll it into balls, and poach them in a garlicky harissa tomato sauce. Dinner is on the table in under 45 minutes.

The fish stays tender because it gently simmers instead of frying. Ras el hanout, cumin, and a chopped half lemon do the heavy lifting, and the sauce is good enough to mop up with bread. If you like the meatball tagines on this site, this seafood version is a lighter spin on the same idea.

Key Takeaways

  • White fish is the move. Cod, halibut, or tilapia all work. The fish poaches in the sauce, so it stays moist.
  • Ras el hanout is the signature. That North African spice blend is what makes these taste Moroccan rather than generic.
  • No frying. The balls simmer in the tomato sauce, which keeps the cleanup to one pan.
  • Harissa sets the heat. Start with less if you are spice-shy; you can always stir in more.
  • Great for meal prep. The sauce and balls hold up well in the fridge for a few days.

How to Make Moroccan Fish Meatballs

  1. Make the sauce: heat the olive oil in a large pan with a lid, add the garlic, and cook about 30 seconds until fragrant. Add the crushed tomatoes, broth, harissa, bell peppers, herbs, ras el hanout, cumin, and chopped lemon. Bring to a boil, then simmer 15 minutes while you shape the balls.
  2. Pulse the fish in a food processor with the onion, garlic, cilantro, parsley, chili, ras el hanout, ginger, cinnamon, salt, and pepper until finely chopped but not pureed.
  3. Fold in the breadcrumbs and egg with a drizzle of olive oil until the mix holds together when squeezed.
  4. Form the fish kofta into 1-tablespoon balls, about 20 total, using damp hands.
  5. Nestle the balls into the simmering sauce and spoon sauce over the tops. Cover partway and simmer 10 to 15 minutes until the fish is cooked through (it flakes easily and is no longer grey in the center; an instant-read thermometer reads about 135F / 57C).
  6. Rest 2 minutes, garnish with more herbs, and serve with couscous or rice.

Ingredients

  • 1 lb (450 g) white fish fillet, such as cod, halibut, or tilapia, cut into large pieces (see note)
  • 1 small yellow onion, quartered
  • 2 garlic cloves
  • 1/2 cup fresh cilantro, packed
  • 1/2 cup fresh parsley, packed
  • 1 small hot chili or jalapeno, stemmed (optional; seed for less heat)
  • 1 tsp ras el hanout
  • 1/2 tsp ground ginger
  • 1/2 tsp ground cinnamon
  • 1/2 tsp ground cumin
  • 1/2 tsp kosher salt
  • 1/4 tsp black pepper
  • 1/2 cup dried breadcrumbs (gluten-free works)
  • 1 large egg, lightly whisked
  • 1 tbsp extra-virgin olive oil, plus more for the sauce

For the sauce:

  • 2 tbsp extra-virgin olive oil
  • 3 garlic cloves, minced
  • 1 can (28 oz / 800 g) crushed tomatoes
  • 1 cup low-sodium chicken or vegetable broth
  • 2 tbsp harissa paste (adjust to taste)
  • 1 red bell pepper, sliced
  • 1/2 cup fresh cilantro or parsley, chopped
  • 1 tsp ras el hanout
  • 1/2 tsp ground cumin
  • 1/2 lemon, chopped (flesh, peel, and pith), seeds removed
  • Kosher salt and black pepper, to taste

Note: Frozen white fish is fine. Thaw it fully and pat it dry so the mixture is not watery. If your fish is very lean, a splash more olive oil in the mix keeps the balls from drying out.

Tips for fish meatballs that hold their shape

The mix is softer than a beef meatball, so a couple of habits keep it from falling apart in the sauce. Chill the shaped balls for 10 minutes if your kitchen is warm, and use damp hands when rolling. Do not skip the breadcrumbs. They are the only thing binding the fish together, and a soft mix will slump instead of staying round.

If the mixture still feels too loose after mixing, add another tablespoon of breadcrumbs. Too much liquid from the fish is usually the cause, and a little more binder brings it back without changing the flavor.

Variations

  • Different fish: Swap cod for halibut, tilapia, or even whiting. Any mild white fillet works. Oily fish like salmon change the character, so save that for salmon meatballs.
  • No harissa: Use a teaspoon of smoked paprika plus a pinch of cayenne for a milder, still-warm sauce.
  • With eggs: Stir in a couple of eggs at the end for a Moroccan fish “tagine” closer to Moroccan kefta mkaouara. The eggs poach in the sauce and turn it into a brunch-style dish.
  • Couscous shortcut: Toast the couscous in the empty sauce pan for a minute before adding water. It picks up the spice left behind and tastes better than plain.
  • Meal prep: These are built for the fridge. Pack a portion with couscous and greens and you have lunch sorted for days. See the meal prep curation list for more ideas, or pair them with Moroccan kefta with preserved lemon and olives if you want a lamb-based tagine alongside.

Storage and make-ahead

  • Fridge: Keep cooked fish meatballs and sauce in an airtight container up to 3 days. Reheat gently on the stove so the fish does not toughen.
  • Freezer: Freeze the cooled sauce and balls together in a container for up to 2 months. Thaw overnight in the fridge before reheating.
  • Make-ahead: Shape the balls in the morning, cover, and refrigerate. Make the sauce when you are ready to cook, then poach.

FAQ

What kind of fish do you use for Moroccan fish meatballs?

Mild white fish works best: cod, halibut, tilapia, or whiting. They have a clean flavor that lets the ras el hanout and herbs come through, and they hold together when pulsed. Oily fish like salmon taste good but read as a different dish.

Are Moroccan fish meatballs spicy?

They are gently warm, not hot. The heat comes from harissa paste and an optional chili in the fish mix. Use less harissa and skip the chili for a mild version, or add more for extra kick. The bell pepper and lemon keep the sauce bright.

Can you make kefta hout without a food processor?

Yes. Finely chop the fish with a sharp knife, then mash it with the onion, herbs, and spices using the back of a fork until it is a coarse paste. It takes longer, but the result is the same. A processor is just faster.

How do you keep fish meatballs from falling apart?

Use enough breadcrumbs to bind, roll with damp hands, and let the balls poach gently at a bare simmer rather than a hard boil. A 10-minute chill before cooking also helps them keep their shape in the sauce.

What do you serve with Moroccan fish meatballs?

Couscous and rice are the defaults because they soak up the sauce. Warm bread works too. For a seafood spread, Hong Kong curry fish balls are a fun contrast in a soupy, spiced direction.

Can you freeze Moroccan fish meatballs?

Yes. Freeze the cooked balls and sauce together in a container for up to 2 months. Thaw in the fridge and reheat slowly on the stove. The texture holds up better than freezing the raw mix.

Sources