This North African-style fish kofta recipe is saucy, incredibly flavorful, fragrant and so delicious! Boldly seasoned halibut “meat”balls swimming in a spicy harissa tomato sauce filled with warming spices and fresh herbs. Just add rice or couscous!
I’ll be the first to admit I don’t have the prettiest name for this recipe. But whether you call it fish “meat”balls, fish balls, fish kefte/kofta, or just plain Moroccan fish, this is one of the tastiest, most intensely flavorful fish recipes ever!
To make it, I spike a simple tomato sauce with warming spices like ginger, ras el hanout, cinnamon, spicy harissa paste, loads of fresh herbs, and chopped lemon–yes, peel, pith, and all.
You simply let the sauce happily bubble until jammy while you roll the fish meatballs. Just like my Moroccan Fish, it develops this incredibly deep, complex North African flavor but takes less than an hour.
The fish kofta, which are already loaded herbs and spices, poach in the fragrant sauce just like eggs in Shakshuka. So they stay very juicy and tender while they are infused with even more flavor.
A few Mediterranean pantry basics are all you need to turn a weeknight fish recipe into this wow-worthy dinner.
Table of Contents
Moroccan Fish Kofta Ingredients and Substitutions
While the ingredient list may seem long, it’s almost exclusively jars and cans from the pantry–many of which you can find at our shop. You’ll need:
- Fish: Any firm, mildly flavored white fish fillet works best, like halibut or cod.
- Fresh aromatics: Yellow onion and garlic give a nice sweet-and-savory depth of flavor. You can use any color onion (or shallots) and green onions in place of garlic if you prefer.
- Fresh herbs: I use a combination of cilantro and parsley for freshness. If you don’t like cilantro, substitute with fresh mint or more parsley.
- Fresh chili: Fresh chili or jalapeño adds complexity to the sauce’s spicy side, but you can remove the seeds or leave it out entirely if you’re worried about it being too spicy.
- Seasonings: Ras el hanout, ginger, cinnamon, and cumin add earthy, sweet, spicy flavor. Harissa makes the sauce deeply savory, sweet, bright, and spicy all at once. Kosher salt and black pepper enhance the flavor.
- Dried breadcrumbs keep the fish juicy and adds a nice texture to the fish balls. Feel free to use gluten-free!
- Egg holds the fish mixture together.
- Extra virgin olive oil enriches the sauce and the fish. Use a high-quality extra virgin variety–any of the oils from our shop would work well.
- Diced tomatoes with their juices form the base of the sauce. If you have a can of whole tomatoes, simply pour it into a bowl and use your hands to burst and pull apart the tomatoes into small pieces.
- Vegetable broth adds some liquid to the sauce so it’s not too thick without watering it down. Chicken stock or chicken broth also works.
- Red bell pepper adds a welcome texture and freshness. I like the sweetness of red peppers, but yellow, green, or purple bell peppers work well too.
- A whole lemon adds an intensely bright pop of acidity to balance the intensity of the sauce. Organic/unsprayed lemon is preferred since you will also eat the skin.
What is Harissa?
Harissa is a fragrant, spicy North African red chile paste or sauce flavored with garlic, olive oil, citrus and warming spices. You can make your own harissa from scratch or find our favorite high-quality harissa at our shop.
Endlessly useful, just a spoonful of harissa dials up the flavor of so many simple dishes. Use like hot sauce, spooning onto eggs (scrambled, fried or baked). Spread on sandwiches and hummus toast. Or whisk right into aioli to make a spicy mayo of sorts. It also makes for a delicious marinade for fish, chicken, or veggies like roasted cauliflower steaks.
What is Ras el Hanout?
Ras el Hanout is a versatile spice blend that gives a wide range of dishes a bold Mediterranean flavor, including Pastilla (Skillet Chicken Pie), braised fish and chicken, Lamb Stew, couscous, and more. It is used throughout North Africa and the Middle East, however its origins are rooted in Morocco.
While the exact recipe varies from region to region, shop to shop, and family to family, the Ras El Hanout consists of a complex mix of anywhere from 10 to 30 different spices. Combining sweet, savory, and spicy notes, it typically includes warming spices like cinnamon, cumin, coriander, turmeric, ginger, cardamom, nutmeg, cloves, and black pepper.
Look for this delightfully aromatic spice at your local Middle Eastern market or online at our shop and have it delivered right to your door. For a deeper dive, check out our guide: Ras El Hanout: The “Top Shelf” Spice You Want In Your Pantry.
How to Make this Recipe
Get any sides or starters ready before you add the fish kofta balls to the sauce (suggestions below). The biggest key to this recipe is to poach the fish just until it’s cooked through, otherwise it will dry out. Be sure to check on the balls as they simmer—they should flake easily when you poke them with a fork and the internal temperature reaches about 135°F. Here are steps:
Start Simmering the Sauce
- Start the sauce. In a large pan with a lid, heat about 2 tablespoons olive oil. When the oil shimmers, add 3 minced garlic cloves and cook over medium heat, tossing regularly until fragrant, about 30 seconds. Add a 15-ounce can of diced tomatoes with their juices, 1 cup vegetable broth, and 1 thinly sliced bell pepper.
- Season and simmer. Stir in 2 tablespoons harissa paste (or start with less if you’re sensitive to spice), 1/2 packed cup chopped cilantro or parsley leaves and 1/2 teaspoon each ras el hanout and cumin. Add 1/2 chopped lemon (pith and rind included, seeds discarded), and a big pinch of salt and pepper. Bring to a boil, then lower the heat and cover partway, leaving just a small opening at the top. Let the mixture gently simmer while you make the fish balls.
Make the Fish balls
- Make the fish mixture. In the bowl of a large food processor fitted with a blade, add 1 pound of chopped fish fillet, 1 small quartered onion, 2 peeled garlic cloves, 1/2 cup of fresh cilantro, and parsley. Add 1 small hot chili pepper or jalapeno, stemmed (if using). Season with 1 teaspoon ras el hanout, 1/2 teaspoon ginger and cinnamon, and a big pinch of salt and pepper (about 1/2 teaspoon each). Close the lid and pulse several times until the mixture is well blended.
- Transfer the fish mixture to a large bowl. Add 1/2 cup dried breadcrumbs, 1 lightly whisked egg, and a small drizzle of olive oil. Use your hands to mix until the breadcrumbs and egg are well incorporated.
- Form the fish balls. Form the fish mixture into small balls (about 1 tablespoon of the mixture each).
Poach the Fish
- Cook the fish balls in the sauce. Gently nestle the fish meatballs in the simmering sauce and spoon some of the sauce on top. Cook, keeping the cover on partway and toss occasionally), until the fish is fully cooked through, about 10 to 15 minutes.
- Finish and serve. Garnish with more fresh cilantro or parsley and serve immediately.
What to Serve with this Moroccan Fish Kofta Recipe
You can serve this Moroccan fish dinner on its own, but I love to add a fresh and cooling salad to balance the spice in this dish, like my Mediterranean cucumber salad or creamy cucumber salad.
Alternatively, you could start with one of Morocco’s famous cooked “salads,” like Moroccan carrot salad or Taktouka (Moroccan Tomato and Roasted Bell Pepper Salad), to keep a similar flavor profile.
Missing out on any ounce of the delicious sauce would be a shame, so I always serve with couscous or a grain of some sort on the side. A quick flatbread like Tunisian Mlewi is yet another delicious option. Or you can use your favorite gluten-free bread. Whatever you do, just don’t let the sauce go to waste!
You’ll Also Like: Spicy Harissa Recipes
Moroccan and Tunisian
BEST Moroccan Fish Recipe
Fish and Seafood
Easy Lime-Harissa Spicy Salmon Recipe
Meat and Poultry
Grilled Chicken Drumsticks
Vegetarian
Easy Moroccan Vegetable Tagine Recipe
Browse all Mediterranean recipes.
Visit Our Shop.
Try our Harissa Paste!
Slightly sweet, smoky, and tangy with just the right amount of spice. The perfect addition to your Moroccan Fish.
Moroccan Fish Kofta in a Spicy Harissa Sauce
Ingredients
For the Sauce
- 2 tabelspoons Extra virgin olive oil
- 3 large garlic cloves, minced
- 1 (15-ounce) can diced tomatoes with their juices
- 1 cup vegetable broth
- 2 tablespoons harissa paste (you can start with less if you do not want it to be too spicy)
- 1 large red bell pepper,, cored and thinly sliced into strips
- 1/2 packed cup chopped cilantro or parsley leaves and tender stems, plus more for garnish
- 1/2 teaspoon ras el hanout
- 1/2 teaspoon cumin
- 1/2 lemon, seeds discarded, pith, peel, and flesh finely chopped (yes, skin on)
- Kosher salt
- Black pepper
For the Fish Kofta
- 1 pound white fish fillet, such as halibut or cod, cut into large pieces
- 1 small yellow onion, quartered
- 2 garlic cloves
- 1/2 packed cup fresh cilantro
- 1/2 packed cup fresh parsley
- 1 small hot chili pepper or jalapeno, stemmed (optional, or remove the seeds for less spice)
- 1 teaspoon ras el hanout
- 1/2 teaspoon ground ginger
- 1/2 teaspoon ground cinnamon
- Kosher salt
- Black pepper
- 1/2 cup dried breadcrumbs (gluten free is okay)
- 1 egg, lightly whisked
- 1/2 tablespoon Extra virgin olive oil
Instructions
- Make the sauce. In a large pan with a lid, heat about 2 tablespoons olive oil. Add the garlic and cook over medium heat, tossing regularly until fragrant, about 30 seconds. Add the canned tomatoes with their juices, broth, harissa paste, and bell peppers. Stir in the cilantro or parsley, ras el hanout, cumin, chopped lemon, and a big pinch of salt and pepper. Bring to a boil, then lower the heat and cover partway leaving just a small opening at the top. Let the mixture gently simmer while you make the fish meatballs.
- Make the fish mixture. In the bowl of a large food processor fitted with a blade, add the fish, onion, garlic, cilantro, parsley, and chili pepper or jalapeno (if using). Add the ras el hanout, ginger, cinnamon, and a big pinch of salt and pepper (about 1/2 teaspoon each). Close the lid and pulse several times until the mixture is well blended.
- Transfer the fish mixture to a large bowl. Add the breadcrumbs, egg, and a small drizzle of olive oil. Use your hands to mix until the breadcrumbs and egg are well-incorporated.
- Form the fish kofta. Form the fish mixture into small balls (about 1 tablespoon of the mixture each).
- Cook the fish balls in the sauce. Gently nestle the fish meatballs in the simmering sauce and spoon some of the sauce on top. Cook, keeping the cover on partway and toss occasionally), until the fish is fully cooked through, about 10 to 15 minutes.
- Finish and serve. Garnish with more fresh cilantro or parsley and serve.
Notes
- It’s important to check periodically so the fish doesn’t dry out. Your fish balls are ready when they are no longer grey on the inside and the internal temperature is 135°F. They should flake easily when you poke them with a fork.
- Visit our shop to browse quality Mediterranean ingredients including olive oils, honey, jams, and spices.
Can you make ahead and freeze
Hi, Cheryl! Based on some research, they should freeze okay. It’s just not something we’ve tried before, so it’s hard to be 100% certain. If you give it a go, please stop back and share your thoughts!
I love your cookbook and gave one to my daughter, who loves it as well! This recipe was excellent and the directions were complete and easy to follow. I will try freezing the leftover.
Made this for lunch yesterday. My younger self would have said nope, but this site has not failed to impress and encourage me to try wild ideas. It was awesome. Everything blends really well together and the flavor/textures are fun to eat (my wife and I had seconds…). I served it over couscous. It was wonderful and will absolutely do it again.
Love to hear this, Dan! Thanks so much!
I followed the recipe exactly and served this for supper tonight. It was unique and delicious!! We like hot and spicy but if I made this for company or a potluck, I would decrease the harissa in the sauce to 1 tbsp as you suggested. I used 1 pound of fresh cod and three adults ate about half of the recipe. It is a great way to extend fish. Thanks for a very tasty dish that we will make again.
Wonderful! Thanks so much, Ruth!
Hi: I will definitely be making this. I would like to know if you think Sole would be a suitable fish. It is often very reasonably priced and delicate flavour but it is difficult to cook as it falls apart so quickly. I thought this recipe might be a good way to use it as the other ingredients could add stability.
I’m so happy to find your website & will sign up, but would you be so kind as to send me your free e-book as well. Many thanks for your thoughtful & generous lifestyle recipes.
Hi, Jenny! I’m Summer and I work with Suzy at The Mediterranean Dish. Glad you’re finding lots of great things on the website. We do our best! You will see the e-cookbook in your inbox soon. As far as using sole, we can’t really say as we haven’t experimented with it ourselves. But what is life without experimentation! Should you try it please report back and share your findings with the TMD community that way we all learn together.
Would I be able to make the fish meatballs ahead of time and freeze them for a later meal?
Hi, Leah. Based on some research, they should freeze okay. It’s just not something we’ve tried before, so it’s hard to be 100% certain. If you give it a go, please stop back and share your thoughts!
Hello! Would substituting rolled oats for bread crumbs alter the meatballs significantly?
Hi, Marianne. We haven’t tested this recipe with anything other than bread, so it’s hard to say. I feel like it would be worth a try, though! If you give it a go, please stop back and share your thoughts!
Do you cook the fish first before adding the ingredients or do you make the fish balls with raw fish.
Great question! You’ll make the fish balls with raw fish and then cook them in the sauce.
What can I substitute for Harissa paste? Stacy’s or hot buffalo sauce? What to substitute for that rad ingredient? Thanks.
Hi, Mary. If you can’t find harissa in your area, you can always purchase it from our online shop, or even make it yourself with this recipe (it’s easier to do than you think!).