Moroccan Braised Fish in Tomato Sauce

Golden flaky white fish fillets nestled in rich Moroccan tomato sauce with vibrant red peppers and aromatic herbs Save
Golden flaky white fish fillets nestled in rich Moroccan tomato sauce with vibrant red peppers and aromatic herbs | homesteadspoon.com

This comforting North African-inspired dish features tender white fish fillets braised in a rich, aromatic tomato sauce. The fish is first marinated with lemon and a blend of cumin, paprika, and turmeric, then gently simmered in a homemade sauce featuring onions, bell peppers, garlic, and warming Moroccan spices. The result is melt-in-your-mouth fish infused with complex flavors, perfect served over couscous or with crusty bread to soak up the spiced sauce. Ready in under an hour, this one-pan meal is both nourishing and deeply satisfying.

The first time I made this Moroccan fish, my kitchen smelled like a spice market I had once visited in Marrakesh. My neighbor knocked on the door, drawn by the cumin and paprika wafting through the hallway. That night, we ate it straight from the pan with torn pieces of crusty bread, and nobody spoke until the last bite was gone.

Last winter, when my sister was recovering from surgery and could barely stand at the stove, I taught her this one-pot method. She texted me the next day saying her family had already requested it twice that week. Theres something about fish braised in sauce that feels like being hugged from the inside out.

Ingredients

  • 4 skinless white fish fillets: Cod, haddock, or halibut work beautifully here because they hold their shape while staying tender, about 150g each
  • Juice of 1 lemon: This brightens everything and helps the fish absorb all those gorgeous spices
  • 1 tsp salt and ½ tsp black pepper: Dont skip seasoning the fish before it hits the pan
  • 2 tbsp olive oil for the marinade: This helps the spice rub cling to every inch of the fillets
  • 2 garlic cloves, finely minced: Fresh garlic makes such a difference here than powder ever could
  • 1 tsp ground cumin, 1 tsp sweet paprika, and ½ tsp ground turmeric: This trio is the backbone of Moroccan flavor, warm and earthy without being overwhelming
  • 1 tbsp each chopped fresh cilantro and parsley: These herbs bring a fresh green counterpoint to the rich tomato sauce
  • 2 tbsp olive oil for the sauce: A good foundation for building flavor
  • 1 large onion, finely chopped: Take your time here, really getting them soft and sweet
  • 1 red bell pepper, diced: Adds natural sweetness and a lovely pop of color
  • 3 garlic cloves, minced: Because you can never really have too much garlic
  • 1½ tsp ground cumin, 1 tsp paprika, ½ tsp ground coriander, and ¼ tsp cayenne: Layering the spices this way creates depth, not just heat
  • 1 can (400 g) crushed tomatoes: The base of your sauce, so use a brand you actually like eating
  • 2 tbsp tomato paste: This concentrates the tomato flavor and gives the sauce body
  • 150 ml water: Just enough to loosen everything into a braising liquid
  • 1 tsp sugar: A tiny bit of sugar balances the acidity of the tomatoes
  • Salt and pepper to taste: Trust your palate here
  • 1 bay leaf: Adds a subtle aromatic background note
  • 2 tbsp each fresh cilantro and parsley: For that final burst of freshness right before serving

Instructions

Start with the fish:
Place your fillets in a shallow dish and drizzle them with lemon juice, salt, and pepper. Let them sit for about 10 minutes while you prep everything else.
Make the spice rub:
Whisk together the olive oil, garlic, cumin, paprika, turmeric, cilantro, and parsley in a small bowl until it forms a fragrant paste. Rub this mixture all over both sides of each fish fillet, getting into every nook and cranny.
Build your sauce base:
Heat the olive oil in a large deep skillet or Dutch oven over medium heat. Add the chopped onion and sauté for 4 to 5 minutes until its soft and translucent, taking your time to let it sweeten up.
Add the peppers and spices:
Toss in the diced red bell pepper and cook for another 3 minutes. Stir in the garlic, cumin, paprika, coriander, and cayenne, frying for just 1 minute until the spices bloom and become incredibly fragrant.
Create the sauce:
Pour in the crushed tomatoes, tomato paste, water, sugar, salt, pepper, and bay leaf. Bring everything to a gentle simmer and let it cook uncovered for about 10 minutes, stirring occasionally, until the sauce has thickened slightly.
Nestle in the fish:
Gently place the marinated fish fillets into the sauce, spooning some of that gorgeous tomato mixture over the top. Be careful not to break up the fish as you position it.
Let it braise:
Cover the pan and reduce the heat to low. Simmer for 12 to 15 minutes, checking after 10 minutes, until the fish is just cooked through and flakes easily with a fork.
Finish and serve:
Fish out the bay leaf and discard it. Scatter fresh cilantro and parsley over the top, bringing everything to the table in the same pan you cooked it in.
Tender cod pieces simmered gently in spiced tomato sauce topped with fresh cilantro and parsley garnish Save
Tender cod pieces simmered gently in spiced tomato sauce topped with fresh cilantro and parsley garnish | homesteadspoon.com

My daughter, who swore she hated fish for years, ate three helpings the first time I made this. Now she requests it for her birthday dinner every year, which I consider the highest compliment a recipe can receive.

What to Serve Alongside

Steamed couscous is the traditional choice because it soaks up that spiced tomato sauce like a dream. But fluffy white rice works just as well, and honestly, sometimes I just serve it with good crusty bread for dipping and calling it dinner.

Make It Your Own

Green olives stuffed with garlic add a briny punch that cuts through the richness of the sauce. Preserved lemon slices are another authentic addition that brings this incredible salty citrus brightness. Sometimes I throw in some roasted red peppers for extra sweetness.

Storing and Reheating

This actually tastes even better the next day as the spices meld and the sauce deepens. Store it in an airtight container in the fridge for up to 3 days, reheating gently over low heat with a splash of water to loosen the sauce.

  • Fish can be fragile when reheating, so use a wide spatula and lift carefully
  • The sauce may separate slightly when chilled but will come back together with gentle heat
  • Never use high heat or the fish will toughen up immediately
White fish braising in fragrant Moroccan tomato sauce with colorful diced bell peppers and green herbs Save
White fish braising in fragrant Moroccan tomato sauce with colorful diced bell peppers and green herbs | homesteadspoon.com

Theres something so satisfying about a dish that looks and tastes like it came from a restaurant kitchen but comes together in under an hour. I hope this finds its way into your regular rotation too.

Recipe FAQs

White fish fillets like cod, haddock, halibut, or sea bass are ideal as they hold their shape well during braising and absorb flavors beautifully. Thicker fillets work best to prevent overcooking.

Absolutely. Increase the cayenne pepper to ½ teaspoon or add red pepper flakes to the tomato sauce. You can also serve with harissa paste on the side for those who enjoy extra heat.

Steamed couscous is traditional and perfect for absorbing the sauce. You can also serve over fluffy rice, with warm crusty bread, or alongside roasted vegetables for a complete meal.

The fish is ready when it flakes easily with a fork and appears opaque throughout. Braising typically takes 12–15 minutes, but check a few minutes early to avoid overcooking.

Yes, thin slices of preserved lemon add authentic Moroccan flavor. Add them during the last 5 minutes of cooking to soften and infuse the sauce with their unique tangy, salty depth.

The sauce actually improves overnight as flavors meld. Store in the refrigerator for up to 3 days and reheat gently—avoid boiling to prevent the fish from becoming tough.

Moroccan Braised Fish in Tomato Sauce

Tender fish fillets simmered in a fragrant Moroccan-spiced tomato sauce with aromatic spices and fresh herbs.

Prep 20m
Cook 30m
Total 50m
Servings 4
Difficulty Medium

Ingredients

Fish

  • 4 skinless white fish fillets (cod, haddock, or halibut, about 5 oz each)
  • Juice of 1 lemon
  • 1 tsp salt
  • ½ tsp ground black pepper

Marinade

  • 2 tbsp olive oil
  • 2 garlic cloves, finely minced
  • 1 tsp ground cumin
  • 1 tsp sweet paprika
  • ½ tsp ground turmeric
  • 1 tbsp chopped fresh cilantro
  • 1 tbsp chopped fresh parsley

Tomato Sauce

  • 2 tbsp olive oil
  • 1 large onion, finely chopped
  • 1 red bell pepper, diced
  • 3 garlic cloves, minced
  • 1½ tsp ground cumin
  • 1 tsp paprika
  • ½ tsp ground coriander
  • ¼ tsp cayenne pepper
  • 1 can (14 oz) crushed tomatoes
  • 2 tbsp tomato paste
  • ⅔ cup water
  • 1 tsp sugar
  • Salt and pepper, to taste
  • 1 bay leaf
  • 2 tbsp chopped fresh cilantro
  • 2 tbsp chopped fresh parsley

Instructions

1
Prepare Fish: Place fish fillets in a shallow dish. Drizzle with lemon juice, salt, and pepper. Let marinate for 10 minutes.
2
Make Spice Marinade: In a small bowl, mix olive oil, garlic, cumin, paprika, turmeric, cilantro, and parsley. Rub onto both sides of the fish fillets. Set aside.
3
Sauté Aromatics: Heat olive oil in a large, deep skillet or Dutch oven over medium heat. Add onion and sauté for 4–5 minutes until soft.
4
Add Vegetables and Spices: Add red bell pepper and cook for 3 minutes. Stir in garlic, cumin, paprika, coriander, and cayenne. Fry for 1 minute until fragrant.
5
Simmer Tomato Sauce: Pour in crushed tomatoes, tomato paste, water, sugar, salt, pepper, and bay leaf. Bring to a simmer and cook uncovered for 10 minutes, stirring occasionally, until slightly thickened.
6
Add Fish to Sauce: Gently nestle the marinated fish fillets into the sauce. Spoon some sauce over the top.
7
Braise Fish: Cover and simmer on low for 12–15 minutes, or until the fish is just cooked through and flakes easily.
8
Finish and Garnish: Remove bay leaf. Sprinkle with fresh cilantro and parsley before serving.
Additional Information

Equipment Needed

  • Large deep skillet or Dutch oven
  • Sharp knife
  • Cutting board
  • Mixing bowls
  • Measuring spoons

Nutrition (Per Serving)

Calories 295
Protein 29g
Carbs 15g
Fat 13g

Allergy Information

  • Contains fish. Gluten-free and dairy-free, but check labels on canned tomatoes and spices for cross-contamination if required.
Laura Whitmore

Sharing easy, comforting recipes and real-life cooking tips from my kitchen to yours.