Cuban fish soup is a home-style seafood soup built around tender white fish, potatoes, peppers, tomato, and a fragrant broth seasoned with garlic, cumin, and lime. Recipes vary from household to household; this version keeps the broth bright and savory, with a gentle sofrito base and enough substance to serve as a complete meal.
Ingredients
- 2 tablespoons olive oil (30 ml)
- 1 medium yellow onion, finely diced (about 150 g)
- 1 medium green bell pepper, diced (about 150 g)
- 4 garlic cloves, minced (about 12 g)
- 1 medium ripe tomato, diced (about 180 g), or 1 cup canned diced tomato (240 g)
- 1 teaspoon ground cumin (2 g)
- 1 teaspoon dried oregano (1 g)
- 1 bay leaf (about 0.2 g)
- 6 cups fish stock, preferably low-sodium (1.42 L); or low-sodium chicken broth (1.42 L)
- 12 ounces waxy potatoes, such as Yukon Gold, cut into ¾-inch (2 cm) pieces (340 g)
- 1 teaspoon fine salt (6 g), plus more to taste
- ½ teaspoon black pepper (1 g)
- 1½ pounds skinless, boneless firm white fish, cut into 1½-inch (4 cm) chunks (680 g), such as snapper, cod, or grouper
- 2 tablespoons fresh lime juice (30 ml), plus lime wedges for serving
- ¼ cup chopped fresh cilantro (about 4 g)
- ¼ teaspoon crushed red pepper flakes (about 0.5 g), optional
Instructions
-
Prepare everything before you start cooking: dice the onion, pepper, and tomato; mince the garlic; peel the potatoes if you prefer, then cut them into evenly sized pieces. Pat the fish dry and cut it into chunks of similar thickness. Keeping the fish pieces uniform helps them cook at the same rate, while drying them helps prevent excess water from thinning the soup.
-
Warm the olive oil in a heavy soup pot or Dutch oven over medium heat. Add the onion and green pepper and cook for about 4 minutes, stirring occasionally, until softened but not browned. Stir in the garlic and cook for 30 seconds, just until fragrant. Add the tomato, cumin, oregano, bay leaf, black pepper, and optional red pepper flakes. Cook for 3½ minutes, stirring, until the tomato begins to break down and the mixture smells aromatic. This onion-pepper-tomato base is the soup’s sofrito-style foundation.
-
Pour in the fish stock and add the potatoes and measured salt. Bring the liquid to a gentle boil, then reduce the heat so it simmers steadily without bubbling hard. Cover the pot slightly ajar and cook for 17 minutes, stirring once or twice, until the potatoes are nearly tender when pierced with a knife. If the liquid is boiling vigorously, lower the heat; a rolling boil can break up the potatoes and make the broth cloudy.
-
Lower the heat until the broth is barely simmering. Slide in the fish pieces and gently nudge them under the liquid with a spoon. Simmer uncovered for about 7 minutes, depending on the thickness of the pieces, until the fish is opaque and separates easily into flakes. Check the center of a thick piece with a food thermometer: the USDA FSIS safe minimum internal temperature for fish is 145°F (63°C). Avoid vigorous stirring at this stage so the fish stays in generous pieces.
-
Remove the pot from the heat and discard the bay leaf. Stir in the lime juice and chopped cilantro, then taste the broth. Add salt, pepper, or another small squeeze of lime as needed. Let the soup sit for 1 minute before ladling it into warm bowls; that brief pause lets the flavors settle without continuing to cook the fish for long.
Tips
-
Choose a firm fish that will hold together in soup. Snapper, cod, haddock, and grouper work well; very delicate fillets can flake apart before the potatoes are tender. If using frozen fish, thaw it fully in the refrigerator, drain any liquid, and pat it dry before cutting.
-
Fish stock gives the broth a more distinctly seafood flavor. If it is hard to find, low-sodium chicken broth is a practical substitute and makes a milder soup; vegetable broth also works, though the result will taste less like a traditional seafood broth. Start with low-sodium stock so you can season the finished pot accurately.
-
For a sour-orange note, replace the lime juice with 2 tablespoons (30 ml) sour orange juice if you have it. Bottled sour orange can vary in strength, so add it gradually and taste. A convenient substitute is 1 tablespoon orange juice (15 ml) mixed with 1 tablespoon lime juice (15 ml); it makes the finish rounder and less sharply tart.
-
Keep the simmer gentle once the fish goes in. A strong boil can make the fish break into small flakes and may cause the potato edges to crumble. If the soup is ready before everyone sits down, turn off the heat rather than leaving it bubbling on the stove.
Serving Suggestions
Serve the soup hot in deep bowls, making sure each serving gets fish, potatoes, and plenty of broth. Put lime wedges on the table so each person can adjust the acidity at the last moment. A little extra cilantro adds freshness, while a few drops of hot sauce or a pinch of red pepper flakes suit anyone who wants more heat.
Warm Cuban bread, crusty rolls, or toasted bread are useful for dipping into the tomato-seasoned broth. For a more filling meal, offer white rice on the side or spoon a modest amount into each bowl just before serving. A simple avocado salad or sliced avocado with a pinch of salt also pairs well; keep side dishes lightly seasoned so they do not compete with the cumin, lime, and fish.
Variations
To use a mix of seafood, replace up to half the fish with peeled raw shrimp or firm scallops. Add shrimp during the final few minutes, allowing them to cook until opaque and firm, and check that all seafood reaches a safe temperature. Seafood pieces differ in size, so avoid adding everything at once if some items cook much faster than the fish chunks.
For a heartier vegetable version, add 1 cup (150 g) sliced carrots with the potatoes, or stir in 1 cup (150 g) frozen corn during the final 5 minutes. The carrots need the full potato simmer to soften; corn does not. You can also replace the potatoes with 1½ cups (240 g) cooked white beans, adding them with the fish so they warm through without turning mushy.
To make the broth more tomato-forward, add 2 tablespoons (30 g) tomato paste with the diced tomato and cook it for a minute before adding stock. For extra richness, stir in 1 tablespoon (14 g) butter at the end. These are optional changes rather than requirements; the basic version is intentionally light enough for lime and fresh herbs to remain noticeable.
Storage and Reheating
Refrigerate leftovers within 2 hours of cooking, transferring them to shallow, airtight containers so they cool promptly. The soup keeps for 3 to 4 days in the refrigerator. Fish can become more fragile after storage, so use a ladle rather than stirring hard when portioning it. If you expect leftovers, you can also keep some fish separate from the broth and potatoes, then combine portions when reheating.
Reheat only the amount you plan to eat in a covered saucepan over medium-low heat, stirring gently, until it reaches 165°F (74°C) throughout. Check the center with a food thermometer; do not rely only on steaming or bubbling at the edges. A microwave is also suitable: cover the bowl loosely, heat in short intervals, and stir carefully between intervals for even heating. The fish may break into smaller pieces after reheating, but the soup will still be enjoyable.
For longer storage, freeze the soup in airtight freezer containers for up to 2 months for best quality. The potatoes may soften and the fish may become more crumbly after thawing. Thaw it in the refrigerator, then reheat to 165°F (74°C). Do not leave the soup at room temperature for extended storage, and do not try to preserve it by canning.
Frequently Asked Questions
What fish is best for Cuban fish soup?
Choose a mild, firm white fish that can be cut into thick chunks. Snapper, cod, haddock, and grouper are good options. The best choice depends on what is fresh and available; avoid thin, delicate fillets if you want the fish to remain in distinct pieces in the bowl.
Can I make the soup with frozen fish?
Yes. Thaw the fish completely in the refrigerator, then drain and pat it dry before adding it to the pot. Partly frozen fish can release extra water and cook unevenly, making it harder to reach a safe temperature without overcooking the outside.
Can I make the broth ahead of time?
Yes. Prepare the soup through the potato-simmering step, cool and refrigerate the broth and vegetables promptly, then bring them back to a simmer and add the fish shortly before serving. Cook the fish to 145°F (63°C), then finish with lime and cilantro. This approach gives you fresher texture than cooking the fish far in advance.
How can I keep the fish from falling apart?
Cut it into thick, similar-sized chunks, add it only after the potatoes are nearly tender, and keep the soup at a gentle simmer. Move the pieces as little as possible. Some flaking is normal, especially with softer fish, but a hard boil and frequent stirring are the main causes of a broken-up texture.
Is Cuban fish soup spicy?
This recipe is mild unless you add the optional red pepper flakes or hot sauce. Cumin, garlic, oregano, and lime provide flavor without making the broth hot. For a group with different preferences, serve hot sauce separately so each person can season their own bowl.
Related
- Cajun Onion Soup with Cheesy Toast
- Cajun Oyster Soup with Cream, Herbs, and a Gentle Kick
- Cajun Oyster Stew: A Creamy, Peppery Louisiana Bowl
More recipes to cook
Safety notes: safe minimum internal temperatures from USDA FSIS; raw and undercooked fish guidance from the U.S. FDA. Food safety notes
Spotted an error? Tell us and we will correct it (corrections policy).