Quick Recipe Version (TL;DR)
Quick Ingredients
- 2 whole firm white fish (sea bream, sea bass, snapper), 500–700 g each, cleaned
- 3 medium carrots, thickly sliced
- 3 celery stalks with leaves, chopped
- 2 medium potatoes, peeled and cut in large chunks
- 1 large onion, halved
- 1 small leek, halved (optional)
- 2 bay leaves
- 8–10 whole black peppercorns
- 2 teaspoons fine sea salt, plus more to taste
- 2 tablespoons extra-virgin olive oil (for simmering)
- 8 cups (2 L) cold water
- 1/3 cup extra-virgin olive oil (for finishing)
- 1/3 cup freshly squeezed lemon juice
- 2 tablespoons chopped fresh parsley
- Freshly ground black pepper; lemon wedges to serve
Do This
- 1. Prep fish (scale, gut if needed, rinse and pat dry) and cut vegetables into large, rustic pieces.
- 2. Add carrots, potatoes, celery, onion, leek (if using), bay leaves, peppercorns, salt, olive oil, and water to a large pot; bring to a boil, then simmer 15 minutes.
- 3. Gently lay fish into the pot; simmer on low 12–15 minutes, until just cooked through and flaky.
- 4. Carefully lift out fish and set on a platter; remove vegetables with a slotted spoon to a bowl. Strain broth through a fine sieve.
- 5. Whisk 1/3 cup olive oil with 1/3 cup lemon juice and a pinch of salt to make a simple ladolemono (lemon–olive oil sauce).
- 6. Return broth and vegetables to the pot to warm. Serve soup in bowls with pieces of fish on top, drizzle with ladolemono, sprinkle with parsley and pepper, and add lemon wedges on the side.
Why You’ll Love This Recipe
- Light, clean flavors that still taste rich and comforting, thanks to a homemade fish broth.
- Uses whole fish for maximum flavor and a very economical, authentic Greek-style soup.
- Simple ingredients and gentle simmering do all the work; perfect for an easy yet elegant meal.
- Customizable: keep it brothy and light, or enrich it with rice, orzo, or an egg–lemon finish.
Grocery List
- Produce: Carrots, celery (with leaves if possible), potatoes, onion, leek (optional), lemons, fresh flat-leaf parsley.
- Dairy: None required (optional: plain Greek yogurt for serving).
- Pantry: 2 whole white fish (from fish counter), extra-virgin olive oil, bay leaves, whole black peppercorns, fine sea salt, freshly ground black pepper.
Full Ingredients
Main Soup
- 2 whole firm white fish (such as sea bream, sea bass, or snapper), 500–700 g each, scaled, gutted, and rinsed (about 2–2.5 lb total)
- 3 medium carrots (about 300 g), peeled and cut into 1 cm / ½ inch thick rounds
- 3 celery stalks with leaves (about 150 g), cut into 2–3 cm / 1 inch pieces
- 2 medium waxy potatoes (about 400 g), peeled and cut into large chunks (3–4 cm)
- 1 large yellow onion (about 200 g), peeled and halved (leave root end intact so it holds together)
- 1 small leek, white and light green parts, well rinsed and halved lengthwise (optional but traditional)
- 2 bay leaves
- 8–10 whole black peppercorns
- 2 teaspoons fine sea salt, plus more to taste
- 2 tablespoons extra-virgin olive oil
- 8 cups (2 liters) cold water
To Finish & Serve
- 1/3 cup (80 ml) extra-virgin olive oil
- 1/3 cup (80 ml) freshly squeezed lemon juice (from about 2 lemons), plus extra lemon wedges for serving
- 2 tablespoons finely chopped fresh flat-leaf parsley
- Freshly ground black pepper, to taste
- Additional fine sea salt, to taste
Optional Add-Ins
- 1/3 cup (60 g) short-grain rice or small pasta (such as orzo), cooked separately and added to bowls before serving
- Extra vegetables such as a small parsnip or a piece of fennel bulb, chopped into large pieces

Step-by-Step Instructions
Step 1: Prep the fish and vegetables
If your fish is not already cleaned, scale and gut it, or ask your fishmonger to do this. Rinse the fish under cold running water, paying special attention to the cavity, then pat very dry with paper towels. Leave the head and bones on; they will flavor the broth. Trim any long fins if you like, and set the fish aside in the fridge while you prep the vegetables.
Peel the carrots and slice them into thick rounds. Peel the potatoes and cut them into large, rustic chunks so they will not fall apart in the soup. Rinse the celery and cut into 2–3 cm pieces, including the leaves if they look fresh. Peel the onion and cut it in half through the root, leaving the root end attached so it stays together. If using leek, halve it lengthwise and rinse well between the layers to remove any grit.
Step 2: Start the vegetable base
Place the carrots, potatoes, celery, onion halves, and leek (if using) into a large, wide pot or Dutch oven. Add the bay leaves, whole peppercorns, 2 teaspoons of salt, and 2 tablespoons of olive oil. Pour in the 8 cups (2 liters) of cold water. The vegetables should be fully submerged; if not, add a little extra water to cover.
Set the pot over medium-high heat and bring to a gentle boil. As it heats, skim off any foam that may rise to the surface with a spoon. Once boiling, reduce the heat to medium-low and simmer uncovered for about 15 minutes, until the vegetables are starting to soften but are not yet fully tender. This gives them a head start before the delicate fish goes in.
Step 3: Poach the fish gently
When the vegetables are just tender around the edges, carefully lay the whole fish on top of the vegetables in the pot. They will be partly submerged; that is fine. Adjust the heat so the liquid stays at a very gentle simmer, with only small bubbles breaking the surface. Avoid a hard boil, which can break up the fish and cloud the broth.
Poach the fish for 12–15 minutes, depending on their size and thickness. They are done when the flesh is opaque all the way to the bone and flakes easily with a fork near the thickest part, but the fish is still holding its shape. Turn off the heat as soon as they reach this point to keep them moist and tender.
Step 4: Strain the broth and separate fish and vegetables
Using two large spatulas or a wide slotted spoon and a spatula, carefully lift each fish out of the pot and transfer to a large platter. Let them cool slightly so you can handle them later for serving. With a slotted spoon, transfer the vegetables to a bowl, leaving the cooking liquid in the pot.
Set a fine-mesh sieve over another clean pot or large heatproof bowl. Pour the cooking liquid through the sieve to remove the bay leaves, peppercorns, and any fish bits. Discard the solids stuck in the sieve. Taste the clear broth and adjust seasoning with more salt if needed. You should have a fragrant, lightly golden fish broth.
Step 5: Make the lemon–olive oil dressing (ladolemono)
In a small bowl or jar, combine 1/3 cup (80 ml) extra-virgin olive oil and 1/3 cup (80 ml) freshly squeezed lemon juice. Add a pinch of salt. Whisk vigorously or shake in a lidded jar until the mixture thickens slightly and looks creamy and emulsified. Taste and adjust the balance, adding more lemon for brightness or a little extra salt if you like.
This simple ladolemono will be drizzled over both the fish and the soup just before serving, giving the whole dish a classic Greek flavor and a beautiful glossy finish.
Step 6: Warm, assemble, and serve
Return the strained broth to a clean pot and add the cooked vegetables back in. Warm gently over low heat until steaming but not boiling. While it warms, carefully remove the skin and bones from the fish: lift off the skin, then use your fingers or a fork to pull the flesh away from the backbone in large chunks, watching for small bones. Arrange the boneless fish pieces on a serving platter.
To serve, ladle hot broth and vegetables into warmed soup bowls. Add several generous chunks of fish to each bowl. Drizzle each serving with a spoonful or two of the ladolemono, then sprinkle with chopped fresh parsley and plenty of freshly ground black pepper. Taste and add a little extra salt or lemon juice if needed. Serve immediately, with extra lemon wedges on the side for squeezing at the table.
Pro Tips
- Choose the right fish: Firm, white, non-oily fish with bones (like sea bream, sea bass, snapper, or cod) make the best-tasting broth. Avoid very oily fish such as mackerel for this particular soup.
- Keep the simmer gentle: A low, steady simmer keeps the broth clear and prevents the fish from breaking apart. If it is bubbling vigorously, reduce the heat immediately.
- Skim for clarity: Skimming foam and impurities during simmering gives you a cleaner-tasting, more elegant broth.
- Cut vegetables large: Chunky pieces are less likely to disintegrate and look more attractive in the bowl.
- Debone carefully: Take a minute to check the fish for small bones before serving, especially if you are serving children or guests who are not used to whole fish.
Variations
- Psarosoupa with rice or orzo: Cook 1/3 cup rice or small pasta separately in salted water. Add a spoonful to each bowl before ladling in the soup for a heartier meal.
- Avgolemono finish: For a richer, creamy version, whisk 2 eggs with 3 tablespoons lemon juice. Temper with hot broth, then gently stir back into the pot off the heat to thicken the soup without curdling.
- Herb-forward: Add a small sprig of fresh thyme or a piece of fennel frond to the simmering vegetables for a subtle aromatic twist, removing before serving.
Storage & Make-Ahead
For best texture, psarosoupa is ideal eaten the day it is made, but it also keeps reasonably well. Cool the broth, vegetables, and fish completely, then store them separately in airtight containers in the refrigerator for up to 2 days. Reheat the broth and vegetables gently over low heat until hot, then warm the fish pieces briefly in the hot broth right before serving so they do not overcook or dry out. The lemon–olive oil dressing can be made up to 3 days in advance and kept chilled; bring to room temperature and whisk again before drizzling. The broth itself (without fish or potatoes) freezes well for up to 3 months; thaw overnight in the fridge and reheat gently. Avoid freezing the cooked fish and potatoes, as their texture will suffer.
Nutrition (per serving)
Approximate values per serving (based on 4 servings, using sea bream and all of the ladolemono): about 350–380 calories; 25–30 g protein; 20–24 g fat (mostly from olive oil, with around 3–4 g saturated fat); 15–18 g carbohydrates; 3–4 g fiber; 450–600 mg sodium (depending on added salt). These numbers will vary with the exact fish used, its fat content, and how much dressing you add to each bowl.

