Codfish soup with tomatoEs & Vegetables

Codfish Soup with Tomatoes and Vegetables (Caldeirada de Bacalhau)

A traditional Portuguese coastal stew — wild cod (fresh or salt-cured), waxy potatoes, sweet onions, garlic, and ripe tomatoes simmered in bone broth and rich Portuguese olive oil. Naturally grain-free, sugar-free, and seed-oil-free, with optional shellfish for a fuller seafood expression and zucchini noodles for a lower-carb variation.

Yield: 4–6 servings · Active: 30 min

Total: 50 min (1 hour 15 min with salt cod soaking the day before)

A note from the kitchen

Caldeirada is the great Portuguese fisherman's stew — a one-pot composition of whatever the sea gave that day, layered with potato, onion, tomato, garlic, and bay leaves, finished with fresh herbs and good olive oil. It's already aligned with ancestral eating principles: no grain thickeners, no sugar, no seed oils, no industrial shortcuts. Just clean fish, real vegetables, bone broth, and EVOO.

The traditional anchor is bacalhau — salt cod, which Portuguese cooking has elevated into one of the great preserved foods of the Western world. But fresh wild cod works beautifully, and the recipe accommodates a wider range of white fish (monkfish, grouper, sea bass, hake, halibut, haddock) plus optional shellfish (clams, mussels, shrimp) for a richer, more abundant version.

Ingredients

For the soup base

  • 1½ lb wild cod fillets (about 1 inch thick), skin removed, cut into 2-inch chunks — see protein options below for substitutes and salt cod variation

  • 1 tbsp sea salt (only if using fresh cod; salt cod is pre-salted)

  • Freshly cracked black pepper

  • 3 tbsp high-quality Portuguese or Spanish extra-virgin olive oil

  • 2 medium yellow onions, thinly sliced into half-moons

  • 1 large leek, white and pale-green parts only, halved, rinsed, and sliced

  • 6 cloves garlic, smashed and roughly chopped

  • 1 red bell pepper, seeded and sliced into thin strips

  • 1 yellow or orange bell pepper, seeded and sliced into thin strips

  • 1½ lb waxy potatoes (Yukon Gold, fingerling, or new potatoes), peeled and cut into ½-inch thick rounds

  • 4 large ripe tomatoes, peeled and roughly chopped (or 1 can crushed tomatoes — San Marzano if available)

  • 2 tbsp tomato paste

  • 1 tsp sweet smoked paprika

  • 2 bay leaves

  • 1 sprig fresh thyme

  • 1 strip lemon peel (no white pith)

  • 4–5 cups fish or chicken bone broth (preferably homemade)

  • 1 cup filtered water (as needed)

  • Sea salt and freshly cracked black pepper to taste

Optional shellfish add-ins

  • 1 lb fresh clams (Manila, littleneck, or cockles), scrubbed and purged

  • 1 lb fresh mussels, debearded and scrubbed

  • ½ lb wild shrimp (15-20 count), peeled and deveined (tails on for presentation)

Optional zucchini noodles variation

  • 2 medium zucchini, spiralized into noodles (added in the last 3 minutes of cooking — keeps them al dente)

For finishing

  • ½ cup fresh flat-leaf parsley, roughly chopped

  • ¼ cup fresh cilantro leaves, roughly chopped (cilantro is genuinely traditional in Portuguese coastal cooking — don't skip it)

  • 2 lemons, cut into wedges

  • High-quality extra-virgin olive oil for drizzling

  • Flaky sea salt

  • Optional: a pinch of crushed red pepper or piri-piri for heat

Method

If using salt cod (bacalhau): start the day before

  1. Soak the salt cod. Place the salt cod in a large bowl and cover completely with cold filtered water. Refrigerate. Change the water 3 times over 24 hours (every 6–8 hours). The cod should be plump, white, and lightly salted by the end — taste a small piece raw to check. If still too salty, soak another 6 hours with one more water change. (Note: 24 hours with 3 water changes is the practical minimum that works with quality salt cod. For very thick or very heavily salted pieces, you may need longer — the taste-test step (tasting a small raw piece) is the genuine way to know).

  2. Drain and portion. Drain the soaked cod, pat dry, remove any pin bones, and cut into 2-inch chunks. Proceed with the recipe.

If using fresh cod: start here

  1. Prep the fish. Pat the cod chunks dry with paper towels. Season lightly with sea salt and pepper. Let rest at room temperature for 15 minutes while you build the soup base.

Build the soup

  1. Build the base. Heat the olive oil in a large heavy Dutch oven or wide soup pot over medium heat. Add the sliced onions, leek, and a pinch of sea salt. Cook 10–12 minutes, stirring occasionally, until softened and just beginning to caramelize.

  2. Add the garlic and peppers. Add the smashed garlic and sliced bell peppers. Cook 5 minutes more, until the peppers begin to soften.

  3. Add the tomato paste. Stir in the tomato paste and cook 2 minutes, until it deepens to a brick-red color.

  4. Add the tomatoes and aromatics. Add the chopped tomatoes, smoked paprika, bay leaves, thyme sprig, and lemon peel. Stir to combine and let cook 5 minutes, until the tomatoes break down and release their juices.

  5. Layer the potatoes. Arrange the potato rounds across the top of the tomato base in a single layer (or as close as possible). The potatoes should mostly sit on top of the vegetables, not buried.

  6. Add the broth. Pour in enough bone broth to just cover the potatoes (about 4 cups). Add 1 cup of filtered water if needed. Bring to a gentle simmer.

  7. Simmer the base. Cover partially and simmer 15–18 minutes, until the potatoes are tender when pierced with a fork. Taste the broth and adjust salt and pepper.

  8. Add the cod. Nestle the cod chunks into the broth among the potatoes. The fish should be mostly submerged. Cover and simmer 6–8 minutes, until the cod is opaque and flakes easily. Don't overcook — cod becomes rubbery if pushed past flaking-tender.

  9. Add optional shellfish. If using clams or mussels, add them in the last 5 minutes of cooking. Cover and let them steam open in the hot broth. Discard any that don't open. If using shrimp, add in the last 2–3 minutes, until just pink and opaque.

  10. Add optional zucchini noodles. If using, add the spiralized zucchini in the last 3 minutes of cooking. Don't overcook — they should stay al dente, slightly firm.

  11. Finish. Remove the bay leaves, thyme stems, and lemon peel. Taste and adjust salt. Sprinkle generously with chopped parsley and cilantro.

  12. Serve. Ladle into wide, warm bowls. Drizzle each bowl with a thread of high-quality olive oil, a pinch of flaky sea salt, optional crushed red pepper, and serve with lemon wedges alongside.

Variations

  • Salt cod (bacalhau) version: Follow the salt cod soaking protocol at the top. Use 1 lb dried salt cod (which rehydrates to about 1½ lb). The structural authenticity is unmatched — this is how Portuguese coastal cooks have made the dish for centuries.

  • Monkfish version: Substitute 1½ lb monkfish tail (skin and dark membrane removed), cut into 2-inch chunks. Monkfish holds its shape better than cod and gives a meatier, almost lobster-like texture. Increase the cooking time to 8–10 minutes.

  • Grouper version: Substitute 1½ lb wild grouper fillets, cut into 2-inch chunks. Slightly firmer than cod, with a richer flavor. Cook 7–8 minutes.

  • Sea bass / branzino version: Substitute 1½ lb European sea bass or branzino fillets. Cook 6–7 minutes — slightly less than cod since the flesh is more delicate.

  • Hake version: Substitute 1½ lb wild hake fillets. Structurally similar to cod, slightly sweeter, common in traditional Portuguese cooking. Cook 6–8 minutes.

  • Halibut version: Substitute 1½ lb wild Pacific halibut fillets. Firmer texture, slightly sweeter. Cook 7–8 minutes.

  • Haddock version: Substitute 1½ lb wild haddock fillets. Slightly more delicate than cod with a sweeter flavor. Cook 6–7 minutes.

  • Mixed-fish version: Combine two or three white fish (cod + monkfish + hake) for a more complex coastal stew. Add the firmer fish (monkfish, halibut) first, then the more delicate fish (hake, sea bass) in the last few minutes.

  • Seafood-only version: Skip the cod entirely and use 1 lb clams + 1 lb mussels + ½ lb shrimp + 4 oz wild squid rings for a Portuguese-style cataplana.

  • With saffron: Add a pinch of saffron threads to the broth in the building step for a deeply golden, more Andalusian flavor profile.

  • With white wine: Deglaze the pan with ½ cup dry Portuguese Vinho Verde or Spanish Albariño after the tomato paste step, before adding the tomatoes. Adds bright acidity and complexity.

  • Spicier version: Add 1 fresh red chile (sliced) along with the garlic, or finish bowls with a few drops of homemade piri-piri sauce.

  • Without nightshades: Skip the bell peppers, tomatoes, and tomato paste. Substitute with 1 cup peeled chopped butternut squash and an extra splash of bone broth — the soup will be lighter and more golden.

  • Low-carb version: Skip the potatoes entirely and use 4 cups spiralized zucchini noodles added in the last 3 minutes. Adds significantly more vegetable volume without the starchy weight.

  • Cheese garnish: Shred a small amount of aged Portuguese sheep cheese (queijo da Serra or queijo de Azeitão) over each bowl just before serving — the residual heat will soften and lightly melt it. Aged Manchego also works beautifully.

  • Nori garnish: handful of crumbled toasted nori or dulse garnished on top of each bowl at the end would add iodine and trace ocean minerals — a nice ancestral touch, with a textural crunch in every bite.

Pairs Well With

A simple bitter greens salad (arugula, watercress, or escarole) with sherry vinaigrette to cut the richness. Grain-free seed bread, sprouted sourdough, or grilled sweet potato rounds for sopping up the broth. A small plate of olives and Marcona almonds.

Sourcing

Wild cod. Look for wild-caught Atlantic cod (from sustainable fisheries — Alaska, Iceland, or Norway are the cleanest sources). Avoid farmed cod, which carries different fat profiles and contamination concerns. Cod fillets should smell of clean ocean, be firm and translucent-white, and spring back when pressed. From a busy fishmonger or specialty seafood counter, not a slow-moving supermarket. Frozen-at-sea wild cod is an excellent alternative — often fresher than "fresh" cod that's been sitting on ice for days.

Salt cod (bacalhau). This is the structural anchor of the traditional Portuguese version. Look for whole salt cod fillets or boneless loins. The best salt cod is air-dried (not just brined), with a creamy white interior and visible salt crust. Avoid pre-shredded or "salt cod flakes" — they're often lower-grade fish.

Alternative white fish. For monkfish, grouper, sea bass (European), hake, halibut, and haddock — all should be wild-caught from sustainable fisheries. Look for firm, translucent flesh with no off odors.

Optional shellfish. Live clams and mussels from a busy seafood counter — they should be tightly closed (or close when tapped). Discard any with cracked shells. Wild shrimp from the Gulf of Mexico, Pacific Northwest, or sustainably-farmed sources (US-based, not imported tropical farmed).

Bone broth. Homemade fish or chicken bone broth is the gold standard. Fish broth from cod heads, frames, and shrimp shells is genuinely the most authentic for this dish. If purchasing, Bonafide Provisions, Kettle & Fire, or Brodo all work — single-ingredient, no fillers.

High-quality Portuguese or Spanish extra-virgin olive oil. This is the structural fat of the dish — use a good one. Look for single-estate, harvest-dated within the last 12 months, in a dark glass bottle. Portuguese olive oils from the Alentejo region. Spanish single-origin oils also work beautifully.

Sweet smoked paprika. Spanish-style oak-smoked paprika is the traditional choice. Look for "Pimentón de La Vera" on the label.

Waxy potatoes. Yukon Gold, fingerling, or new potatoes hold their shape best in soup. From a local farmers' market or organic produce section. Russet potatoes are too starchy — they'll break down and cloud the broth.

Ripe tomatoes. From a farmers' market in peak summer; canned San Marzano or other small-producer canned tomatoes in winter. Avoid commercial canned tomatoes with citric acid additives or calcium chloride (which makes them chalky).

Fresh parsley and cilantro. From a windowsill pot or farmers' market for best flavor. The cilantro is genuinely traditional in Portuguese coastal cooking — Portuguese cuisine uses cilantro far more than Spanish cuisine does.

Sea salt. Baja Gold mineral sea salt for cooking, fleur de sel for finishing.

Storage

Soup (without zucchini noodles): Keeps in the refrigerator up to 3 days, covered. The flavor improves on day 2 as everything integrates. Reheat gently on the stovetop — never microwave, as it overcooks the fish and toughens the texture.

Soup with zucchini noodles: Best eaten the day it's made — the zoodles soften significantly with reheating. If you anticipate leftovers, keep the zoodles separate and add fresh to each bowl.

Soup with shellfish: Best eaten same day. Cooked clams, mussels, and shrimp toughen significantly with reheating.

Salt cod, soaked and drained: Wrap tightly and refrigerate up to 2 days before cooking.

Why This Dish

This dish is structurally one of the most accessible whole-food ancestral meals in coastal European cooking. Here's what's actually in the bowl:

Cod and wild white fish — clean protein and ocean minerals. Wild cod delivers about 20 grams of complete protein per 3.5-oz serving, plus selenium (over 80% of the recommended daily intake), B12, phosphorus, and iodine. Like all small-to-medium white fish, cod sits near the middle of the marine food chain — much lower in mercury, PCBs, and microplastic contamination than larger predatory fish. The fat profile is lean and clean — primarily polyunsaturated omega-3 fatty acids in moderate concentrations.

Salt cod — a traditional preserved food. Salt-curing has been used for centuries to preserve fish without refrigeration. The process concentrates the protein (about 75% protein by dry weight) and creates a uniquely sweet, dense, almost meaty flavor that fresh fish simply doesn't replicate. Salt cod is also one of the most economical proteins on Earth — a small piece of dried salt cod rehydrates to nearly double its weight and feeds multiple servings.

Shellfish (optional) — concentrated trace minerals. Clams, mussels, and shrimp deliver some of the highest concentrations of B12 (clams deliver over 1,400% of the daily value per serving), zinc, copper, manganese, and iron in any food. Mussels are also one of the most sustainable seafood choices — they're filter feeders that clean the water they grow in, and they require no feed inputs.

Tomatoes — lycopene that's more bioavailable when cooked. The slow simmer transforms raw lycopene into a far more bioavailable form. Tomatoes also deliver vitamin C, potassium, and structural polyphenols.

Potatoes — slow-burning starch and resistant starch. Waxy potatoes deliver potassium, vitamin C, B6, and (when cooled and reheated) significant amounts of resistant starch that feeds beneficial gut bacteria.

Olive oil — the essential fat of the dish. A single bowl can deliver 2–3 tablespoons of high-quality EVOO, which provides monounsaturated fats, vitamin E, oleocanthal (a documented anti-inflammatory compound), and polyphenols. The olive oil is also what carries the fat-soluble compounds (lycopene, beta-carotene, vitamin A precursors) into the body for absorption.

Garlic, onion, and leek — sulfur compounds and prebiotics. The allium family delivers allicin (antimicrobial), quercetin (anti-inflammatory polyphenol), and inulin (prebiotic fiber that feeds beneficial gut bacteria).

Bone broth base — collagen, gelatin, and minerals. Real bone broth delivers collagen-derived amino acids (glycine, proline, hydroxyproline), gelatin (which supports gut lining integrity), and concentrated trace minerals from the bones and connective tissue.

Cilantro — emerging research on detoxification support. Cilantro contains compounds with emerging research support for binding heavy metals and supporting natural detoxification pathways. It's also one of the most polyphenol-rich culinary herbs.

Why this kind of stew. The Portuguese coast has been making caldeirada-style stews for centuries. The clean protein from the sea, vegetables and herbs from the kitchen garden, potatoes for grounding starch, and good fat from local olive groves all deliver complete nutrition with minimal industrial processing, and the leftovers improve overnight.

— Anna aka Food Marshall

Previous
Previous

Mint Chocolate Chip Brownie Cheesecake with Strawberry Jam

Next
Next

Slow-Braised Rabbit (Conejo) with Mediterranean Vegetables, Pan Drippings, and Romesco