This saffron fish recipe cooks firm white fish in a fresh tomato, garlic and saffron sauce. It is a practical way to cook fish with saffron in five clear steps, simple enough for a weeknight but fragrant enough for a family gathering.

White fish fillets in tomato saffron sauce with rice

Saffron fish recipe at a glance

  • Serves: 4
  • Preparation: about 20 minutes, including a short marinade
  • Cooking: 25 to 30 minutes
  • Best fish: cod, haddock, halibut or another firm, boneless white fillet

The tomato sauce is gently spiced rather than hot. Fennel seed supports the fish, while saffron supplies the floral aroma. If your chilli powder is strong, begin with less; you can add heat at the table, but you cannot take it out of the pan.

Ingredients for saffron fish

  • 700 g (1½ lb) boneless, skinless firm white fish fillets
  • 6 medium ripe tomatoes, about 800–900 g in total
  • 3 tablespoons olive oil, divided
  • 1 small onion, finely grated or very finely chopped
  • 2 garlic cloves, crushed
  • 25–30 saffron threads
  • 3 tablespoons warm water
  • ½ teaspoon fennel seeds, lightly crushed
  • ¼ teaspoon mild red chilli powder, or to taste
  • 1 tablespoon fresh lemon juice
  • ¾ teaspoon fine salt, divided, plus more if needed
  • ¼ teaspoon black pepper
  • Chopped parsley, dill or coriander leaves for serving
  • Optional: toasted almond slivers for garnish

Prepare the saffron infusion

Crush the saffron lightly in a mortar or between clean fingers. Cover it with the warm water and leave it for 10 to 15 minutes while you prepare the fish and tomatoes. The liquid should turn a deep golden orange and smell distinctly floral.

Prepare the tomatoes

Cut the tomatoes in half and grate the cut side on the large holes of a box grater, stopping when only the skin remains. Discard the skins. You can also pulse peeled tomatoes briefly in a food processor, but do not turn them into foam.

How to make saffron fish in 5 easy steps

Step 1: Season and briefly marinate the fish

Pat the fillets dry and cut them into four similar portions. Mix the onion, lemon juice, ¼ teaspoon of the salt and the black pepper. Coat the fish and leave it in the refrigerator for 15 minutes.

A long acidic marinade is unnecessary and can make the outside of delicate fish soft. Fifteen minutes gives the onion and lemon time to season the surface without changing the texture. Remove excess wet onion before the fish enters the pan so it can brown instead of steam.

Step 2: Start the spicy tomato sauce

Warm 2 tablespoons of the olive oil in a wide lidded frying pan over medium heat. Add the garlic, fennel seeds and chilli powder. Stir for about 30 seconds, just until fragrant; browned garlic will make the sauce bitter.

Pour in the grated tomatoes and add the remaining ½ teaspoon salt. Let the sauce bubble gently, uncovered, for 15 to 18 minutes. Stir occasionally. It is ready for the next step when the raw tomato smell has softened and a spoon drawn through the pan leaves a path for a moment.

Step 3: Add the saffron

Stir the saffron infusion—threads and liquid—into the tomato sauce. Cook for 2 minutes over low heat, then taste. The sauce should be aromatic, savoury and lightly warm from the chilli. Adjust the salt now rather than after the fish is cooked.

If the sauce has become very thick, add 2 or 3 tablespoons of hot water. It should be loose enough to surround the fish, not so thin that it resembles soup. This saffron broth for fish will reduce a little more in the final step.

Step 4: Cook the fish gently

Heat the remaining tablespoon of oil in a separate non-stick or well-seasoned pan over medium-high heat. Lay in the fish and cook undisturbed for 1½ to 2 minutes, until the first side has a light golden surface. Turn once, cook the second side for 1 minute, then transfer the pieces to the tomato-saffron sauce.

Spoon sauce over the fish, cover the pan and simmer gently for 4 to 7 minutes, depending on thickness. Do not flip the fillets every 5 to 10 minutes; repeated handling breaks them apart and easily overcooks them. Fish is done when the centre is opaque and separates into moist flakes. For a measured safety check, the U.S. government’s safe minimum temperature chart lists fish at 145°F (63°C).

Step 5: Rest, garnish and serve

Turn off the heat and let the covered pan rest for 2 minutes. Spoon the sauce onto a warm platter, place the fish on top and finish with chopped herbs. Almond slivers are optional; use only a small handful so their crunch does not dominate the fish.

Serve immediately with saffron rice, plain basmati rice, couscous or warm flatbread. A crisp cucumber-and-herb salad provides a fresh contrast to the tomato sauce.

Which fish works best?

Choose a firm fillet that can finish in sauce without falling apart. Cod, haddock and halibut are good options; pollock and sea bass also work when the pieces are thick enough. Very thin sole or flounder fillets cook too quickly for this method unless you shorten the sauce stage sharply.

Frozen fish is fine if it is thawed fully in the refrigerator and patted dry. Excess surface water cools the pan, prevents browning and dilutes the sauce. Avoid thawing fish on the counter.

How to keep the fish moist

The two-stage method gives control. A short sear develops flavour, while the gentle covered finish lets the saffron fish absorb the sauce without spending too long over direct heat. These details make the difference:

  • Cut the fillet into pieces of similar thickness.
  • Use a wide pan so the pieces lie in one layer.
  • Bring the sauce to a gentle simmer before adding the fish.
  • Turn the fish only once during searing and not at all in the sauce.
  • Check the thickest piece first and remove the pan from the heat promptly.

Adjustments and substitutions

For a milder sauce

Leave out the chilli powder and use the fennel seeds as written. Do not replace chilli powder with a large amount of black pepper; that creates a different, sharper heat.

If fresh tomatoes are out of season

Use 800 g (28 oz) good-quality canned whole tomatoes, crushed by hand. Simmer them until the sauce no longer tastes raw. Canned tomatoes vary in salt and acidity, so season after reducing.

If you prefer not to sear

Place the seasoned raw fish directly in the finished sauce, cover and simmer gently until done. The dish will still taste good, although the fillets will have a softer surface and the sauce may need an extra minute uncovered after the fish is removed.

What to serve with saffron fish

Rice is the natural choice because it absorbs the saffron-tomato sauce. Although this tomato-based recipe is not among the best-known Iranian fish dishes, its saffron-and-rice pairing feels at home on the same table. For a dependable method, follow our simple saffron rice recipe. Keep the rice seasoning restrained so the fish remains the centre of the plate.

For a lighter saffron fish meal, serve the fillets with steamed potatoes or a salad of cucumber, radish, herbs and lemon. Whichever side you choose, bring it to the table as soon as the fish has rested. This saffron fish dish is at its best while the sauce is hot and the flakes are still moist.

Storing leftovers

Cool leftovers promptly, place them in a covered container and refrigerate. Reheat only the portion you need, gently, until steaming hot throughout. Fish becomes dry with repeated heating, so this recipe is better cooked close to serving time than made several days ahead.