Mix together the fish fillets and 2½ tablespoons of the chermoula in a non-metallic bowl, cover and leave to marinate in the refrigerator.
Heat the oil in a large, heavy-based saucepan over a medium heat, add the onion, celery and yellow pepper and cook gently for 12–15 minutes or until softened.
Add the preserved lemons, reserving 2 tablespoons for garnish. Stir in the cherry tomatoes, chickpeas, saffron and remaining chermoula and season to taste with salt and pepper. Stir-fry for 2–3 minutes and then pour over the stock. Bring to the boil, cover and simmer gently for 10 minutes.
Use a large spoon to remove half of the chickpea mixture from the pan. Lay the marinated fish over the remaining mixture in the pan, then return the chickpeas to the pan, covering the fish. Scatter over the olives, cover and simmer gently over a medium-low heat for 10 minutes or until the fish is cooked through.
Ladle the tagine into bowls and sprinkle with the reserved chopped lemon and coriander leaves. Serve with steamed wholewheat couscous.