Pour olive oil into a 10- to 12-inch frying pan (with 2-in.-tall sides) over medium-high heat. When hot, add onion and fennel and stir often until limp, about 8 minutes.
Stir in tomatoes, garbanzos, preserved lemon, olives, cumin, turmeric, paprika, salt, and pepper. Bring to a simmer. Lay fish over vegetables; cover and cook, turning fish once, until fish is opaque but still moist-looking in center of thickest part (cut to test), about 10 minutes.
Meanwhile, in a 2- to 3-quart pan over high heat, bring 2 cups water to a boil. Stir in couscous, cover pan, and remove from heat. Let stand until water is absorbed and couscous is tender to bite, about 5 minutes.
Fluff couscous with a fork and divide among four wide bowls. Spoon fish and vegetables over couscous. Sprinkle with parsley.