In a large skillet or tagine, heat the olive oil over medium heat. Add the chopped onion and sauté until softened, about 5 minutes.
Stir in the minced garlic and cook for another minute until fragrant.
Add the cumin, coriander, smoked paprika, cinnamon, and cayenne pepper. Stir to combine and cook for 1-2 minutes to toast the spices.
Pour in the drained diced tomatoes and vegetable broth, stirring well. Bring the mixture to a simmer.
Add the sliced olives and half of the chopped parsley. Season with salt and pepper to taste.
Gently place the fish fillets into the sauce, spooning some of the sauce over the top. Cover and simmer for about 10-15 minutes, or until the fish is cooked through and flakes easily with a fork.
Remove from heat and stir in the lemon juice. Garnish with the remaining parsley before serving.