Soups & Stews
This cream fish soup recipe transforms delicate white fish into a luxurious velouté that balances rich creaminess with bright lemon and fresh dill. The secret lies in poaching the fish just until tender, then creating a velvety roux that forms the soup’s foundation—no lumps, no shortcuts.
I’ve perfected this technique over years of testing, ensuring the fish stays flaky while the broth achieves that signature silky texture.
The magic happens in the balance: a 30-minute process where timing and temperature control everything. You’ll start with a classic French roux, then incorporate cream and fish stock for depth before adding the poached fish and finishing with a burst of lemon and dill.
This isn’t just a soup—it’s a restaurant-worthy dish that feels indulgent yet precise, with every spoonful offering tender fish and aromatic herbs.
What you’ll end up with is a golden, aromatic soup where the fish melts effortlessly, the cream adds richness without heaviness, and the lemon-dill garnish provides a refreshing finish.
The broth will be thick enough to coat the back of a spoon but light enough to sip, with visible fish pieces that dissolve into pure, buttery flavor. It’s the kind of dish that elevates a simple weeknight dinner into something memorable.
Serve with crusty bread for dipping or a sprinkle of fresh parsley for extra color. The recipe scales beautifully, so you can easily double it for gatherings. Let’s create this velouté that’s as comforting as it is elegant—without the fuss of professional techniques.
Ingredients for cream fish soup
Rich cream, delicate fish, and bright lemon come together for velvety perfection.
| Ingredient | Amount | Notes |
|---|---|---|
| White Fish Fillets 🐟 | 1 ½ lb | Cod, halibut, or haddock preferred |
| Unsalted Butter 🧈 | ½ cup | Cold, cut into small pieces |
| All-Purpose Flour 🌾 | ½ cup | For velouté roux |
| Heavy Cream 🥛 | 1 cup | Full-fat for best texture |
| Fish Stock 💧 | 3 cups | Homemade or high-quality store-bought |
| Lemon Juice 🍋 | ¼ cup | Freshly squeezed |
| Fresh Dill 🌿 | ¼ cup | Chopped, stems removed |
| Fresh Parsley 🌿 | ⅛ cup | Chopped, for garnish |
| Garlic Cloves 🧄 | 3 cloves | Minced, for roux |
| Shallots 🧅 | 2 whole | Minced, for aromatics |
| Salt 🧂 | 1 tsp | Kosher or sea salt |
| Black Pepper 🌶️ | ½ tsp | Freshly ground |
| Crusty Bread 🍞 | 1 loaf | For serving, optional |
| White Wine 🍷 | ½ cup | Dry, for deglazing |
The fish is everything here—cod or halibut hold up best to poaching. Grab fresh fillets from the seafood counter (not frozen blocks) for the best texture. Whole Foods or local fish markets usually have the freshest cuts. For the butter, Plugrá or European-style makes the roux extra flavorful. I always buy extra-virgin olive oil from Trader Joe's for finishing—it adds a nice brightness without overpowering. The fish stock? Homemade is ideal, but Goya or Knorr work in a pinch if you're short on time.
No white wine? Fish stock with a splash of lemon juice works just as well for deglazing. Fresh dill is a must—dried won't cut it. If you're out, parsley at half the amount gives a similar freshness. The shallots can be swapped for onions, but they add a more delicate sweetness. For the roux, low and slow is key—rushing it makes lumps. And if you don't have a thermometer, watch the butter closely—it should bubble gently but not brown. The cream needs to be full-fat for that luxurious texture, but half-and-half works if that's all you've got.
This soup tastes even better the next day once all the flavors meld. Store in an airtight container in the fridge for up to 3 days. The roux keeps for 1 week in the fridge if you make it ahead, but I always finish it fresh. For serving, toasted crusty bread is perfect—just slice it thin and warm it in the oven. The lemon juice and dill can be prepped ahead and stored in the fridge for 2 days before adding to the soup.
Why You'll Love This Recipe
- I’ll be real: most soups turn sad after day two. Not this one. The cream actually improves overnight, getting even thicker and more decadent. Freeze half for lazy days, or reheat it gently for a cozy lunch—no one will guess it’s not fresh.
- Foolproof Simplicity: I swear, this recipe’s the kind of thing you can make with one hand tied behind your back—just melt butter, toss in flour, add stock, and let the cream do the heavy lifting. The fish fillets cook in minutes, and honestly? No one’s judging if you eyeball the measurements.
- Velvet Smooth Magic: That velvety heavy cream swirling into the fish stock? It’s like a warm hug for your taste buds. The butter and flour create this rich, silky base that makes even the simplest fish fillet feel luxurious—no fancy techniques required.
- Weeknight to Dinner Party: Between us, this is my go-to when I need something that feels special but won’t stress me out. Double the batch for leftovers, or serve it in those pretty bowls when unexpected company drops by. The cream keeps it rich, but the fish stock keeps it light—perfect for any vibe.
Step-by-step instructions for cream fish soup recipe
Here's how to make this velvety soup with bright lemon and fresh dill flavors.
Build the Velouté Roux
Melt the 0.5 cup unsalted butter in a large pot over medium heat. Once it's fully melted and foaming subsides, add the 3 cloves minced garlic and 2 whole minced shallots. Cook for 3-4 minutes until the shallots soften and become translucent.
Lower the heat to medium-low and gradually whisk in the 0.5 cup all-purpose flour. Keep whisking constantly for 2-3 minutes until the mixture forms a smooth, peanut-butter-like consistency. This roux forms the foundation of your soup's creamy texture, so don't rush this step. You're looking for a golden color that smells nutty and toasty—not browned or burnt.
Deglaze and Simmer the Base
Pour in the 0.5 cup dry white wine and whisk vigorously to incorporate. Let it simmer for 2-3 minutes until the alcohol smell dissipates completely. This deglazing step captures all the flavor from the bottom of your pot.
Gradually add the 3 cups fish stock while whisking continuously to prevent lumps. Bring the mixture to a gentle boil, then reduce heat to low and let it simmer uncovered for 15 minutes. Stir occasionally to prevent sticking. The soup should thicken slightly as it reduces, creating a rich, flavorful base for your velouté.
Add Cream and Acid for Balance
Remove the pot from heat and stir in the 1 cup heavy cream. Return to low heat and simmer gently for 5 minutes, stirring occasionally. This step creates the luxurious creaminess that defines this soup.
Add the 0.25 cup freshly squeezed lemon juice and 1 tsp salt. Taste and adjust seasoning with black pepper if needed. The acidity from the lemon brightens all the flavors and cuts through the richness of the cream. Keep the soup warm but don't let it boil after adding the cream, or it may curdle.
Cook and Flake the Fish
Cut the 1.5 lb white fish fillets into 1-inch cubes. Add them to the soup and gently stir for 3-4 minutes until they're just cooked through. You'll see the fish turn opaque and flake easily with a fork. Be careful not to overcook—fish continues cooking slightly after you remove it from heat.
Remove the fish and set it aside. Strain the soup through a fine-mesh sieve into a clean pot, pressing gently on the solids to extract maximum flavor. This creates a silky smooth base without any fish bones or skin.
Finish and Serve
Return the strained soup to the pot and stir in the 0.25 cup chopped fresh dill. Gently reheat over low heat until warmed through. The dill adds that signature freshness that makes this soup special.
Add the cooked fish back to the soup and stir gently to combine. Taste and adjust seasoning one final time. Ladle into bowls and garnish with 0.125 cup chopped fresh parsley. Serve immediately with slices of crusty bread on the side for dipping. The contrast of warm bread with this cool, creamy soup is pure comfort food perfection.
Pro Tips For Making Cream Fish Soup
- Whisk the roux fast: Dump the flour into the melted butter all at once, then stir like your life depends on it—no gradual adding. I used to wait, and the flour would clump like sad oatmeal. Two minutes of nonstop whisking over medium heat gives you a smooth base without burning.
- Pat fish bone-dry: Use paper towels to wipe down the fillets until they’re shiny, not just damp. Wet fish steams in its own moisture instead of searing, and you’ll end up with soggy edges in your cream sauce. Trust me, this isn’t the time to be lazy.
- Simmer, don’t boil: Once the cream hits the stock, drop the heat to a bare simmer—tiny bubbles, occasional swirls. Boiling turns your velvety sauce into glue. I learned this after ruining three batches where the cream broke and the soup tasted like a sad, watery puddle.
- Strain the stock: Fish stock from bones or cubes often has bits—strain it through a fine-mesh sieve before using. I skip this sometimes, and the soup gets gummy. Takes 30 seconds but makes the texture buttery-smooth. (Yes, even if you’re impatient like me.)
Dietary considerations for this recipe
Gluten-Free Adaptation
This soup is naturally gluten-free, but the roux requires a special approach. Replace the 0.5 cup all-purpose flour with 0.5 cup gluten-free all-purpose flour blend like King Arthur Measure for Measure.
Whisk it vigorously into the butter to prevent lumps, and cook the roux over low heat for 3-4 minutes until golden. The texture will be slightly different but still velvety. Always check labels—some blends contain additives that may alter flavor. 🌾
Dairy-Free Options
For a dairy-free version, swap the 0.5 cup butter for 0.5 cup olive oil and use 1 cup full-fat coconut milk instead of heavy cream. The coconut milk adds natural sweetness that pairs beautifully with the lemon.
For extra richness, add 1 tbsp nutritional yeast to the roux before adding stock. The flavor profile shifts slightly but remains comforting and creamy. 🥥
Low-Calorie Modifications
Lighten this soup by using 1 cup low-fat Greek yogurt instead of heavy cream and reducing the butter to 0.25 cup. Replace the fish stock with 3 cups low-sodium vegetable broth to cut calories further.
The result is still rich but with 30% fewer calories per serving. Garnish with extra lemon zest to brighten the lighter base. 💡
Vegetarian Substitutes
For a vegetarian version, replace the fish with 1.5 lb firm tofu or king oyster mushrooms, both of which hold their shape when cooked. Use vegetable stock instead of fish stock and add 1 tsp nori flakes to the roux for an umami depth.
The texture will be slightly different but still satisfying. This version works beautifully with a splash of soy sauce instead of lemon juice. 🌱
Allergen-Friendly Tips
If nut allergies are a concern, avoid nutritional yeast substitutes and stick to coconut milk or dairy-free creamers without additives. For shellfish-sensitive diners, ensure your fish stock is shellfish-free—Pacific Foods makes excellent allergen-friendly options.
Always check labels on all ingredients, especially broths and creamers, as cross-contamination can occur during processing. 🚨
Keto-Friendly Version
Make this keto-compatible by eliminating the flour entirely and using 2 tbsp xanthan gum or 1 tbsp psyllium husk powder mixed into the butter to thicken the broth.
Replace the heavy cream with 1 cup full-fat coconut cream and use 3 cups bone broth (beef or chicken) instead of fish stock. The result is a creamy, low-carb soup that stays true to the original's luxurious texture. 🥑
Nutrition facts
Frequently asked questions
Can I use frozen fish instead of fresh for this soup?
Fresh fish is ideal for this recipe, but you can use frozen fish if thawed properly. Place the fish in the refrigerator overnight to thaw slowly—never at room temperature. Pat it completely dry before cooking to prevent excess moisture in the soup. The texture will be slightly less delicate than fresh, but the flavor remains excellent.
Why does my roux turn brown too quickly?
Roux burns when cooked at too high a heat or when the butter-to-flour ratio isn't balanced. Keep the heat at medium-low and whisk constantly for 2-3 minutes until it reaches a golden, peanut-butter-like consistency. If it darkens too fast, remove from heat immediately and add a splash of cold stock to cool it down.
How can I make this soup spicier?
Add a pinch of cayenne pepper or a 1/4 teaspoon of smoked paprika to the roux for subtle heat. For more depth, stir in 1/2 teaspoon of fish sauce after adding the cream. Finish with a sprinkle of red pepper flakes on top before serving. Adjust gradually—this soup is delicate, so start with small amounts.
Can I prepare this soup ahead of time?
This soup tastes even better the next day. Store the finished soup (without the garnish) in an airtight container in the fridge for up to 3 days. Reheat gently on the stove, stirring occasionally, and add fresh dill and parsley just before serving. The flavors meld beautifully overnight, making it perfect for meal prep.
What's the best way to serve this soup?
Serve this velouté in warm bowls with a side of crusty baguette for dipping. For extra elegance, garnish with a drizzle of truffle oil or a sprinkle of toasted breadcrumbs. Pair it with a crisp Sauvignon Blanc or a light Chardonnay to complement the lemon and cream flavors.
