Quick Recipe Version (TL;DR)
Quick Ingredients
- 2 tbsp extra-virgin olive oil
- 1 medium yellow onion, finely chopped
- 2 celery stalks, sliced
- 2 medium carrots, sliced
- 1 1/2 lb (680 g) Yukon Gold potatoes, peeled and cut into 3/4-inch chunks
- 6 cups (1.4 L) fish stock (or seafood stock)
- 1 bay leaf
- 1 tsp kosher salt, plus more to taste
- 1/2 tsp freshly ground black pepper, plus more to taste
- 1 1/2 lb (680 g) skinless white fish fillets (cod, haddock, halibut, or sea bass), cut into 2-inch chunks
- 2 large eggs
- 1/3 cup (80 ml) fresh lemon juice (about 2–3 lemons)
- 1/4 cup (60 ml) extra-virgin olive oil (to finish)
- 1/2 cup loosely packed fresh parsley leaves, chopped
Do This
- 1. Sauté onion, celery, and carrots in 2 tbsp olive oil for 6 minutes.
- 2. Add potatoes, stock, bay leaf, salt, and pepper; simmer 15–18 minutes until potatoes are tender.
- 3. Add fish and gently simmer 5–7 minutes until just cooked and flaky.
- 4. Whisk eggs with lemon juice; slowly whisk in 1 cup hot broth to temper.
- 5. Remove soup from heat; stir tempered avgolemono back into pot (do not boil).
- 6. Drizzle in 1/4 cup olive oil, add parsley, and adjust salt/pepper/lemon.
Why You’ll Love This Recipe
- Bright and comforting: A light broth with a lemony lift and a cozy, silky finish.
- Tender fish without fuss: Gentle simmering keeps the white fish moist and flaky.
- One-pot friendly: Simple steps and everyday ingredients, but it tastes special.
- Avgolemono magic: Eggs and lemon turn the broth velvety without any cream.
Grocery List
- Produce: 1 medium yellow onion, 2 celery stalks, 2 medium carrots, 1 1/2 lb (680 g) Yukon Gold potatoes, 2–3 lemons (for 1/3 cup juice), 1/2 cup fresh parsley
- Dairy: 2 large eggs
- Pantry: extra-virgin olive oil, fish stock (6 cups), 1 bay leaf, kosher salt, black pepper
Full Ingredients
Soup Base
- 2 tbsp (30 ml) extra-virgin olive oil
- 1 medium yellow onion (about 8 oz / 225 g), finely chopped
- 2 celery stalks, sliced 1/4-inch thick
- 2 medium carrots, peeled and sliced 1/4-inch thick
- 1 1/2 lb (680 g) Yukon Gold potatoes, peeled and cut into 3/4-inch chunks
- 6 cups (1.4 L) fish stock or seafood stock
- 1 bay leaf
- 1 tsp kosher salt, plus more to taste
- 1/2 tsp freshly ground black pepper, plus more to taste
Fish
- 1 1/2 lb (680 g) skinless white fish fillets (cod, haddock, halibut, sea bass, or grouper), cut into 2-inch chunks
Avgolemono (Egg-Lemon Finish)
- 2 large eggs, at room temperature
- 1/3 cup (80 ml) fresh lemon juice (from 2–3 lemons)
To Finish
- 1/4 cup (60 ml) extra-virgin olive oil
- 1/2 cup loosely packed fresh parsley leaves, chopped
- Optional: extra lemon wedges for serving

Step-by-Step Instructions
Step 1: Prep your ingredients for smooth cooking
Before you turn on the stove, chop the onion, slice the celery and carrots, and cut the potatoes into even 3/4-inch chunks so they cook at the same pace. Cut the fish into 2-inch pieces (slightly larger pieces stay tender and are less likely to fall apart). Juice enough lemons to measure 1/3 cup (80 ml) and set it aside.
Step 2: Sauté the aromatics to build flavor
In a large heavy pot or Dutch oven (at least 5–6 quarts), warm 2 tbsp (30 ml) olive oil over medium heat. Add the onion, celery, and carrots. Cook, stirring occasionally, for 6 minutes, until the onion looks soft and translucent but not browned.
Step 3: Simmer the potatoes until tender
Add the potatoes, 6 cups (1.4 L) fish stock, 1 bay leaf, 1 tsp kosher salt, and 1/2 tsp black pepper. Increase heat to bring the soup to a gentle boil, then reduce to maintain a steady simmer (small bubbles, not a rolling boil).
Simmer for 15–18 minutes, or until the potatoes are tender when pierced with a fork.
Step 4: Poach the fish gently (no overcooking)
Reduce the heat to low so the soup is barely simmering. Add the fish chunks and gently stir once to submerge them.
Cook for 5–7 minutes, depending on thickness, until the fish is opaque and flakes easily. Keep the heat gentle to avoid breaking up the fish too much.
Step 5: Temper the eggs and lemon for a silky avgolemono
While the fish finishes, make the avgolemono in a medium bowl: whisk the 2 eggs until foamy and smooth, then whisk in the 1/3 cup (80 ml) lemon juice.
Using a ladle, slowly drizzle in 1 cup (240 ml) of hot broth from the pot into the egg-lemon mixture while whisking constantly. This is the key step that prevents the eggs from curdling.
Step 6: Finish the soup off the heat (do not boil)
Turn the heat off under the soup. Slowly pour the tempered egg-lemon mixture back into the pot while gently stirring.
Important: once the avgolemono is added, do not boil the soup. You can set the pot over very low heat for 1–2 minutes to warm through if needed, but keep it below a simmer.
Step 7: Enrich with olive oil and parsley, then taste and serve
Stir in the finishing 1/4 cup (60 ml) extra-virgin olive oil and the chopped parsley. Taste the broth and adjust with more salt, pepper, and/or a squeeze of lemon if you want it brighter.
Serve hot, making sure each bowl gets fish, vegetables, and plenty of that lemony, silky broth.
Pro Tips
- Keep the simmer gentle: Boiling can break up the fish and make it dry. A quiet simmer keeps pieces tender and intact.
- Room-temp eggs temper more easily: If your eggs are cold, place them in warm tap water for 5 minutes before whisking.
- Temper slowly and whisk constantly: Adding hot broth gradually is what gives you a smooth, creamy soup without scrambled egg bits.
- Don’t re-boil after avgolemono: Heat can curdle the egg-lemon mixture. Warm gently only.
- Choose the right fish: Firm white fish (cod, haddock, halibut) holds up best; very delicate fish can fall apart.
Variations
- Add rice instead of potatoes: Swap potatoes for 1/2 cup (90 g) short-grain rice. Simmer rice in the broth for 15–18 minutes until tender, then add fish.
- More vegetable-forward: Add 1 cup (150 g) zucchini cut into 1/2-inch pieces during the last 8 minutes of potato simmering.
- Herb twist: Replace half the parsley with 2 tbsp chopped fresh dill for a classic Greek flavor pairing with lemon and fish.
Storage & Make-Ahead
Because of the avgolemono (egg-lemon) finish, this soup is best enjoyed the day it’s made. If you have leftovers, cool quickly and refrigerate in an airtight container for up to 2 days. Reheat gently over low heat until steaming hot, stirring often, and do not let it simmer or boil to avoid curdling. If you want to make it ahead, you can cook the soup base (vegetables, potatoes, stock) up to 1 day in advance; then reheat, poach the fish fresh, and finish with avgolemono right before serving.
Nutrition (per serving)
Approximate, per 1/6 recipe: 360 calories, 28 g protein, 19 g fat, 21 g carbohydrates, 3 g fiber, 520 mg sodium. Values vary by fish and stock used.
