This is my favorite kind of "looks fancy, cooks easy" dinner: flaky fish fillets with a crunchy zaatar crust, tucked next to caramelized roasted vegetables that basically sauce themselves with olive oil, lemon, and warm spices. It's not trying to be a literal tagine, but it absolutely scratches that cozy, savory-sour, herb-and-citrus itch that makes a good moroccan fish recipe so craveable. Bonus: everything happens on one pan, the fish stays juicy, and the veggies come out sweet around the edges with those little browned bits you'll want to scrape up with bread.
Zaatar-Crusted Fish Fillets with Roasted Vegetables (Weeknight Moroccan-ish Sheet Pan Dinner)
Crispy zaatar fish fillets roasted on a sheet pan with spiced vegetables, lemon, and a quick preserved-lemon yogurt.
Prep Time 20 minutes mins
Cook Time 25 minutes mins
Total Time 45 minutes mins
Course Main Dish
Cuisine Moroccan
Rimmed baking sheet Use a standard 18x13-inch sheet pan so the vegetables roast instead of steam; a large roasting pan works too, but spread the veg in a single layer.
Parchment paper or foil Parchment helps prevent sticking and makes cleanup painless; foil is fine but lightly oil it so the fish crust releases cleanly.
Mixing bowl One medium bowl for tossing vegetables; if you hate dishes, toss directly on the sheet pan, but mix well so spices don't clump.
Microplane or fine grater For lemon zest and garlic; a small knife works, but grating makes a smoother yogurt sauce.
Instant-read thermometer (optional) Not required, but it's the easiest way to avoid overcooking; pull fish at 135ยฐF to 140ยฐF and let carryover finish it.
Fish spatula (optional) A thin, flexible spatula keeps fillets intact; any spatula works if you slide it fully under the fish before lifting.
For the roasted vegetables
- 2 bell pepper any color, sliced into 1-inch strips
- 1 zucchini cut into 1-inch half-moons (swap for eggplant if you want it more tagine-like)
- 1 red onion cut into thick wedges so it doesn't disappear
- 1 cherry tomato use 1 pint; they burst and turn jammy in the pan
- 3 tablespoon olive oil extra virgin; avocado oil works too
- 1 teaspoon ground cumin warm and earthy; coriander is a good swap if that's what you have
- 1 teaspoon sweet paprika adds color and gentle sweetness; use smoked paprika if you want a deeper roast flavor
- 1 teaspoon kosher salt use 1/2 teaspoon if using fine salt
- ยฝ teaspoon black pepper freshly ground if possible
- 1 lemon half sliced into thin rounds for roasting, half reserved for finishing
For the zaatar-crusted fish
- 4 white fish fillet cod, haddock, halibut, sea bass, or tilapia; boneless, skinless, about 6 ounce each
- 1 tablespoon olive oil helps the crust brown
- 2 tablespoon zaatar store-bought is great; if yours is very salty, reduce added salt below
- 2 tablespoon panko breadcrumb for extra crunch; swap with regular breadcrumb or crushed matzo
- 1 tablespoon sesame seed optional, but really plays up the zaatar
- 1 teaspoon kosher salt use 1/2 teaspoon if using fine salt, and reduce if your zaatar is salty
Quick preserved-lemon yogurt (optional but highly recommended)
- ยพ cup plain greek yogurt whole-milk is the creamiest; dairy-free yogurt works but choose an unsweetened one
- 1 tablespoon preserved lemon finely chopped rind only (no pulp); swap with 1 teaspoon lemon zest plus 1/2 teaspoon extra salt
- 1 garlic clove finely grated, or substitute 1/4 teaspoon garlic powder
- 1 tablespoon water thin to a drizzle-able sauce; add another tablespoon if needed
- 1 tablespoon olive oil optional, but it makes the sauce taste rounder
To finish
- ยผ cup cilantro roughly chopped; parsley or mint works if you're not a cilantro person
- 1 lemon cut into wedges for serving
Prep
Heat the oven to 425ยฐF. Line a rimmed baking sheet with parchment paper (or foil, lightly oiled). This high heat is what gives you browned edges on the vegetables without turning the fish into cotton.
Pat the fish fillets very dry with paper towel and set them in the fridge while you start the vegetables. Dry fish is the secret to a crisp zaatar crust that sticks instead of sliding.
Roast the vegetables first
In a mixing bowl, toss bell pepper, zucchini, red onion, and cherry tomato with 3 tablespoons olive oil, cumin, paprika, 1 teaspoon kosher salt, and 1/2 teaspoon black pepper. Add half the lemon slices and toss again so the slices get coated (they'll candy a little in the oven).
Spread the vegetables on the sheet pan in a single layer. Roast for 15 minutes. You want the peppers and onions starting to soften and the tomatoes just beginning to blister. This staggered start is the key to getting properly roasted moroccan fish and vegetables on one pan, because fish cooks faster than sturdy veg.
Make the crust and sauce while the vegetables roast
In a small bowl, mix zaatar, panko breadcrumb, sesame seed (if using), and 1 teaspoon kosher salt. Drizzle in 1 tablespoon olive oil and stir until the mixture looks like damp sand. If it feels dry, add 1 teaspoon more oil; the crumbs should clump when you pinch them.
Optional sauce: In another small bowl, stir greek yogurt, preserved lemon, grated garlic, water, and optional olive oil until smooth. Taste and adjust: it should be bright, a little salty, and garlicky. Refrigerate until serving so it stays thick.
Add the fish and finish roasting
After the vegetables have roasted for 15 minutes, pull the pan out and use a spatula to nudge them around, making 4 little spaces for the fish. This keeps the fish from sitting in vegetable juices, which would soften the crust.
Set the fish fillets into the open spaces. Brush the tops lightly with a little olive oil if they look dry, then press the zaatar mixture firmly onto each fillet (don't just sprinkle it; actually press so it adheres). Add the remaining lemon slices around the fish.
Return the pan to the oven and roast for 10 minutes. The fish is done when it flakes easily and turns opaque in the thickest part; if using a thermometer, aim for 135ยฐF to 140ยฐF, then rest 2 minutes for carryover. If you want extra color on the crust, broil for 2 minutes, watching closely so the crumbs don't burn.
Finish and serve
Squeeze the reserved lemon half over the vegetables and fish right when they come out of the oven. This last hit of acid makes everything taste sharper and more "restaurant."
Scatter cilantro over the pan. Serve the fish with a big spoon of roasted vegetables and a drizzle of preserved-lemon yogurt on top (or on the side for dipping). If you're collecting moroccan fish dinner ideas, this one is especially good with warm flatbread to swipe through the pan juices.
Use boneless white fish fillets that are fairly thick so they don't overcook: cod, haddock, halibut, sea bass, or even tilapia. Skinless is easiest for the zaatar crust because the topping sticks directly to the flesh. Skin-on is fine too, but crust only the flesh side and plan to lift the fillet off the skin when serving.
Yes, but thaw it completely and pat it very dry. Frozen fish releases extra moisture, and moisture is what turns a crunchy crust into a soft one. After thawing, let it sit on paper towel for 5 minutes, then blot again before adding oil and crust.
No, this is a roasted, sheet-pan style moroccan fish recipe inspired by tagine flavors (warm spices, lemon, herbs), not a brothy stew. If you want it more like a traditional moroccan fish stew, spoon a quick tomato sauce over the vegetables before roasting (crushed tomato plus garlic, cumin, and a little water), then nestle the fish into that sauce for the final 10 minutes.
Give the vegetables a head start (15 minutes at 425ยฐF) and keep them spread in one layer. Also, make spaces for the fish so it's not sitting in vegetable juices. That setup is what makes the "moroccan fish and vegetables" combo work without steaming.
You can fake it in a pinch: mix 1 tablespoon dried thyme or oregano, 1 tablespoon sesame seed, 1 teaspoon ground sumac (or lemon zest), and a pinch of salt. It won't be identical, but you'll still get that herby, nutty, citrusy profile that makes this one of those reliable moroccan fish dinner ideas you'll repeat.