Quick Recipe Version (TL;DR)
Quick Ingredients
- 1 1/2 lb (680 g) firm white fish (swordfish, halibut, mahi-mahi, or cod loin), cut into 1 1/4-inch cubes
- 3 tbsp extra-virgin olive oil + more for grill
- 2 tbsp fresh lemon juice + 2 tsp finely grated lemon zest
- 3 garlic cloves, grated or minced (divided)
- 1 1/2 tsp dried oregano, 1 tsp ground cumin, 1 tsp smoked paprika
- 1 1/4 tsp kosher salt (divided) + 1/2 tsp black pepper
- 1 red bell pepper + 1 yellow bell pepper, cut into 1 1/4-inch pieces
- 1 large red onion, cut into 1 1/4-inch chunks
- 1 cup (240 g) plain Greek yogurt
- 1/2 cup (75 g) grated cucumber, squeezed dry
- 1 tbsp chopped fresh mint or dill
- 2 cups (60 g) chopped fresh parsley (for gremolata)
Do This
- 1. If using bamboo skewers, soak 8 skewers in water for 30 minutes.
- 2. Marinate fish: mix olive oil, lemon juice/zest, 2 grated garlic cloves, oregano, cumin, paprika, 1 tsp salt, pepper. Toss with fish; chill 30 minutes.
- 3. Make yogurt sauce: stir yogurt, cucumber, mint/dill, 1 tbsp lemon juice, 1/4 tsp salt, and a little black pepper; refrigerate.
- 4. Make gremolata: mix parsley, 1 tsp lemon zest, 1 minced garlic clove, 1 tbsp olive oil, pinch of salt; set aside.
- 5. Preheat grill to medium-high (450–500°F / 232–260°C). Oil grates.
- 6. Thread fish, peppers, and onion onto skewers. Grill 10–12 minutes, turning every 2–3 minutes, until charred and fish reaches 145°F (63°C).
- 7. Finish with lemon-parsley gremolata and serve with yogurt sauce and extra lemon wedges.
Why You’ll Love This Recipe
- Big Mediterranean flavor, low effort: a quick lemon-garlic marinade plus a fresh herb finish tastes restaurant-level.
- Perfect grilling texture: firm fish stays juicy while the peppers and onions char at the edges.
- Two sauces, no fuss: bright gremolata for zing and a cooling yogurt sauce for balance.
- Weeknight or entertaining: easy to scale up, easy to serve, and naturally gluten-free.
Grocery List
- Produce: lemons (2), garlic (1 head), fresh parsley (1 large bunch), cucumber (1 small), red bell pepper (1), yellow bell pepper (1), red onion (1), fresh mint or dill (small bunch)
- Dairy: plain Greek yogurt (1 cup)
- Pantry: extra-virgin olive oil, dried oregano, ground cumin, smoked paprika, kosher salt, black pepper
- Seafood: firm white fish (1 1/2 lb / 680 g)
Full Ingredients
Fish Kebabs
- 1 1/2 lb (680 g) firm fish (swordfish, halibut, mahi-mahi, or cod loin), cut into 1 1/4-inch (3 cm) cubes
- 1 red bell pepper, cut into 1 1/4-inch pieces
- 1 yellow bell pepper, cut into 1 1/4-inch pieces
- 1 large red onion, cut into 1 1/4-inch chunks (keep a few layers together so they stay on the skewer)
- 8 metal skewers, or 8 bamboo skewers soaked in water for 30 minutes
- Oil for the grill grates (about 1–2 tsp, as needed)
- Lemon wedges, for serving
Lemon-Garlic Mediterranean Marinade
- 3 tbsp extra-virgin olive oil
- 2 tbsp (30 ml) fresh lemon juice
- 2 tsp finely grated lemon zest
- 2 garlic cloves, finely grated or minced
- 1 1/2 tsp dried oregano
- 1 tsp ground cumin
- 1 tsp smoked paprika
- 1 tsp kosher salt
- 1/2 tsp freshly ground black pepper
Lemon-Parsley Gremolata (Finishing Herb Mix)
- 2 cups (60 g) finely chopped fresh flat-leaf parsley (from about 1 large bunch)
- 1 garlic clove, minced very finely
- 1 tsp finely grated lemon zest
- 1 tbsp extra-virgin olive oil
- 1/4 tsp kosher salt
- 1 tbsp fresh lemon juice (optional, for extra brightness)
Cooling Yogurt Sauce
- 1 cup (240 g) plain Greek yogurt (2% or whole milk)
- 1/2 cup (75 g) cucumber, grated and squeezed dry
- 1 tbsp extra-virgin olive oil
- 1 tbsp fresh lemon juice
- 1 tbsp chopped fresh mint or dill (or a mix)
- 1/2 tsp kosher salt
- 1/8 tsp freshly ground black pepper

Step-by-Step Instructions
Step 1: Prep skewers and chop everything evenly
If you’re using bamboo skewers, soak 8 skewers in water for 30 minutes so they don’t burn on the grill. Meanwhile, cut the fish into 1 1/4-inch cubes and cut the peppers and onion into similar-size pieces. Keeping everything close in size helps it cook at the same rate.
Step 2: Mix the marinade and marinate the fish
In a medium bowl, whisk together 3 tbsp olive oil, 2 tbsp lemon juice, 2 tsp lemon zest, 2 grated/minced garlic cloves, 1 1/2 tsp oregano, 1 tsp cumin, 1 tsp smoked paprika, 1 tsp kosher salt, and 1/2 tsp black pepper.
Add the fish cubes and toss gently to coat well. Cover and refrigerate for 30 minutes. (Avoid marinating longer than 45 minutes; lemon juice can start to “cook” the surface and make the fish less juicy.)
Step 3: Make the cooling yogurt sauce
While the fish marinates, make the sauce. In a small bowl, stir together 1 cup Greek yogurt, 1/2 cup squeezed-dry grated cucumber, 1 tbsp olive oil, 1 tbsp lemon juice, 1 tbsp chopped mint or dill, 1/2 tsp kosher salt, and 1/8 tsp black pepper.
Refrigerate until serving so it stays thick and cold.
Step 4: Make the lemon-parsley gremolata
In another small bowl, combine 2 cups chopped parsley, 1 minced garlic clove, 1 tsp lemon zest, 1 tbsp olive oil, and 1/4 tsp kosher salt. Taste and add up to 1 tbsp lemon juice if you want it extra tangy.
Set aside at room temperature while you grill (or refrigerate if your kitchen is very warm).
Step 5: Preheat and oil the grill
Preheat a gas or charcoal grill to medium-high heat (450–500°F / 232–260°C). Clean the grates well.
Right before grilling, lightly oil the grates by dipping a folded paper towel in oil and rubbing it on the grates using tongs. This helps the fish release cleanly.
Step 6: Thread the kebabs
Thread the skewers with alternating pieces of fish, bell pepper, and red onion. Don’t pack pieces too tightly; leaving a small gap helps heat circulate so you get better charring and more even cooking.
Discard any leftover marinade that touched raw fish.
Step 7: Grill until charred and just cooked through
Place kebabs on the grill and cook for 10–12 minutes total, turning every 2–3 minutes, until you have visible char marks and the fish is opaque and flakes easily. For best accuracy, check the thickest fish cube with an instant-read thermometer; it should reach 145°F (63°C).
Transfer the kebabs to a platter and rest for 2 minutes before finishing and serving.
Step 8: Finish with gremolata and serve with yogurt sauce
Spoon the lemon-parsley gremolata over the hot kebabs so the aroma blooms on contact. Serve immediately with the cooling yogurt sauce on the side and plenty of lemon wedges for squeezing.
Pro Tips
- Choose the right fish: Look for firm, grill-friendly fish like swordfish, halibut, mahi-mahi, or thick cod loin. Very delicate fish can fall apart on skewers.
- Don’t over-marinate: Keep lemon-based marinating to 30–45 minutes for best texture.
- Control sticking: Clean grates, oil grates (not the fish), and wait for natural release before turning.
- Even cooking: Cut fish and vegetables to the same size and leave tiny gaps between pieces.
- Best doneness: Pull fish right at 145°F; carryover heat will finish the center without drying it out.
Variations
- Spicy Mediterranean: Add 1/2 tsp red pepper flakes to the marinade and stir 1–2 tsp harissa into the yogurt sauce.
- All-herb finish: Swap the parsley gremolata for a mix of parsley + cilantro (1 cup each) and add 1 tbsp chopped capers for a briny pop.
- Oven broiler option: Broil on a foil-lined sheet pan on the top rack, turning once, for 8–10 minutes total, until fish hits 145°F. Finish with gremolata as written.
Storage & Make-Ahead
Make-ahead: The yogurt sauce can be made up to 2 days ahead and kept covered in the refrigerator. The gremolata is best the day it’s made, but you can chop the parsley and zest the lemon up to 1 day ahead and store separately; mix just before serving. Cut peppers and onion up to 1 day ahead and refrigerate in an airtight container.
Leftovers: Remove fish and vegetables from skewers and refrigerate in an airtight container for up to 2 days. Rewarm gently in a skillet over medium-low heat just until heated through, or enjoy cold over a salad. Store yogurt sauce separately; do not freeze (yogurt may separate).
Nutrition (per serving)
Approximate, based on 4 servings: 390 calories, 40 g protein, 20 g fat, 12 g carbohydrates, 3 g fiber, 6 g sugars, 980 mg sodium.
