For this soup, it really is worth it to make your own fish stock.
2 tablespoons extra-virgin olive oil
1 large yellow onion, quartered
2 garlic cloves, crushed
2 medium carrots, each cut into 3 or 4 pieces
1 large leek, split lengthwise, rinsed between layers, and cut into several pieces; separate white parts from green
2 pounds non-oily fish heads (gills removed) and bones*
3 or 4 sprigs flat-leaf parsley
3 or 4 sprigs thyme
1 1/2 cups dry white wine
How to Make It
Heat oil in a large pot over medium-high heat. Add onion, garlic, carrots, and leek whites and sauté, stirring, until limp, 2 to 3 minutes. Add fish heads and bones and cook, stirring, until flesh begins to turn opaque, about 3 minutes. Add leek greens, parsley, thyme, peppercorns, wine, and 6 to 8 cups water (just enough to cover). Bring to a boil, then reduce heat to low, cover, and simmer 30 minutes. Skim any foam.
Strain through a fine-mesh strainer or a colander lined with cheesecloth. Set stock aside (you will have about 9 cups).
*Check with the fishmonger at your farmers' market, or order ahead from a seafood shop.
Make ahead: 1 day, covered and chilled; up to 3 months frozen.