Heat olive oil in a large tagine or pot over medium heat.
Add sliced onion and sauté until softened, about 5 minutes.
Stir in minced garlic and grated ginger; cook for 1-2 minutes.
Sprinkle in ground cumin, coriander, turmeric, and saffron; stir to combine.
Pour in the diced tomatoes and broth; stir until combined.
Bring the sauce to a gentle simmer; adjust seasoning with salt and pepper.
Add fish chunks to the pot; submerge in the sauce.
Cover and simmer for 10-12 minutes, until fish is cooked through.
Remove from heat and let sit for 5 minutes; garnish with cilantro before serving.