Soups & Stews
This Jamaican fish soup recipe delivers the aromatic, spiced tomato-broth magic that makes every spoonful feel like a taste of home. The secret lies in slow-simmered flavors—thyme, scallions, and Scotch bonnet peppers building depth while tender fish becomes flaky perfection.
I developed this version after years of refining the balance between bold Jamaican spices and delicate fish, ensuring the broth stays rich without overpowering the natural taste.
The recipe begins with a vibrant tomato base infused with traditional Jamaican seasonings, creating a broth that’s both hearty and light. You’ll work with fresh ingredients like snapper or red snapper (or a firm white fish if preferred), which simmer just long enough to stay moist yet flake effortlessly.
The addition of okra or callaloo adds texture, while optional dumplings provide a comforting bite—though the soup shines just as well on its own.
What you’ll end up with is a steaming bowl of golden broth, fragrant with thyme and lime, where flaky fish pieces melt at the first bite. The aroma alone—spicy, citrusy, and deeply savory—will have everyone gathering at the table.
This is the kind of soup that warms the soul while keeping things professional and approachable for home cooks.
Serve with crusty bread to soak up every drop of that flavorful broth, or pair it with a simple side salad for balance. The recipe scales easily, making it perfect for family dinners or gatherings where Jamaican flavors take center stage. Let’s get cooking!
Ingredients for jamaican fish soup
Sixteen ingredients, one aromatic bowl of Jamaican comfort—where spiced tomato broth meets flaky fish perfection.
| Ingredient | Amount | Notes |
|---|---|---|
| Snapper or Red Snapper Fillets 🐟 | 1 ½ lb | Firm white fish preferred, skin removed |
| Scotch Bonnet Peppers 🌶️ | 2 whole | Seeds removed for less heat |
| Fresh Thyme Sprigs 🌿 | ¼ cup | Leaves only, stems discarded |
| Scallions 🧅 | ½ cup | White and green parts, sliced |
| Tomatoes 🍅 | 2 whole | Roma or vine-ripened, diced |
| Okra 🌱 | ½ lb | Fresh, sliced into 1-inch pieces |
| Garlic Cloves 🧄 | 4 cloves | Minced for aromatic base |
| Fresh Lime Juice 🍋 | ¼ cup | Freshly squeezed, strained |
| Vegetable Oil 🫒 | 2 tbsp | For sautéing, neutral flavor |
| Salt 🧂 | 1 ½ tsp | Kosher or sea salt, to taste |
| Black Peppercorns 🌶️ | ½ tsp | Freshly cracked for depth |
| Allspice Berries 🌿 | ½ tsp | Ground for Jamaican warmth |
| Ground Cumin 🌿 | ½ tsp | Toasted for enhanced flavor |
| Dried Callaloo 🌱 | ¼ cup | Optional, for texture |
| Fish Dumplings 🍞 | ½ cup | Optional, store-bought or homemade |
The fish is non-negotiable for texture—snapper or red snapper holds its shape beautifully, but cod or halibut work too. Look for fillets with vibrant color and minimal fishy odor at Whole Foods or local seafood markets. If using frozen, thaw overnight in the fridge, never at room temperature. The Scotch bonnet peppers are the flavor bomb here—grab them at Caribbean markets or the international aisle at Kroger. For the thyme, fresh sprigs from the grocery store's produce section (not dried) bring the most aroma, but if you must use dried, toast the leaves first to intensify their flavor. The okra should be firm and bright green—avoid any with soft spots or yellowing.
No Scotch bonnet? Habanero or jalapeño (seeds removed) will give you heat, though the flavor won't be identical. Short on thyme? Fresh oregano or marjoram at half the amount works in a pinch. The callaloo is optional but adds that signature Jamaican texture—frozen works fine, just thaw and drain well. For the dumplings, store-bought fish dumplings (like those from Trader Joe's) save time, but homemade versions with flour, baking powder, and a pinch of salt are just as good. If you're avoiding gluten, cornmeal dumplings are a solid swap. The lime juice is critical—Mexican limes have more tartness, but regular limes work too. Just strain the juice to avoid pulp in your broth.
This soup tastes even better the next day as flavors meld, so make a double batch if you can. Store in airtight containers in the fridge for up to 4 days, or freeze for 3 months—the broth thickens nicely when reheated. For serving, keep the dumplings separate until the last minute so they stay crisp. The fish will flake perfectly if cooked just until it reaches 145°F internal temperature, so use a meat thermometer for precision. Garnish with extra lime wedges and scallions right before serving to keep everything vibrant.
Why You'll Love This Recipe
- One-Pot Magic: The snapper cooks right in the broth—no extra pans, no fuss. Just toss everything in, simmer, and let the Scotch bonnet and thyme work their flavor spell while you stir a few times. Honestly, I’ve made this on days I forgot to thaw the fish, and it still turned out tender.
- Heat That Sticks: That Scotch bonnet pepper? It doesn’t just add spice—it lingers. The first bite hits with a bright, citrusy kick from the tomatoes, then the thyme and scallions soften into a warm, herby finish. Between us, it’s the kind of flavor that makes you want to eat it straight from the pot.
- Weeknight to Weekend: I serve this with rice for a quick Tuesday dinner, but it’s just as impressive at Sunday gatherings. The leftovers? Even better the next day—if there are any, because it disappears fast. My kids beg for it, and my partner’s coworkers ask for the recipe after one taste.
- Budget-Friendly Catch: Snapper’s affordable, and a single fillet stretches across two servings with the rich broth. The tomatoes and scallions bulk it up, so you’re not breaking the bank for a restaurant-quality meal. Plus, the leftovers reheat like a dream—no soggy fish here.
Step-by-step instructions for Jamaican fish soup
Here's the method for a rich, aromatic Jamaican fish soup with perfectly flaky snapper and a balanced spice profile.
Build the Spiced Tomato Base
Heat the 2 tablespoons vegetable oil in a large pot over medium heat until shimmering. Add the 4 cloves minced garlic cloves and cook for 30 seconds until fragrant but not browned. This prevents bitter flavors from developing.
Add the 2 whole diced tomatoes, 0.5 teaspoon ground cumin, 0.5 teaspoon allspice berries, 0.5 teaspoon black peppercorns, and 1.5 teaspoons salt. Stir well and cook for 5 minutes until the tomatoes break down into a thick paste. The spices should meld completely into the tomato mixture, creating the foundation for your broth.
Here's the thing—don't rush this step. The longer the spices toast in the tomato base, the deeper their flavors will be. You'll know it's ready when the mixture turns a rich, deep red color and smells intensely aromatic.
Develop the Broth with Okra and Callaloo
Add the 0.5 pound sliced okra and 0.25 cup dried callaloo to the pot. Stir to combine with the tomato mixture and cook for 8-10 minutes over medium heat. The okra will release its natural thickening properties while the callaloo rehydrates and adds texture.
Pour in 6 cups of water (or enough to cover the ingredients by about 2 inches) and bring to a gentle boil. Once boiling, reduce heat to medium-low and let it simmer uncovered for 20 minutes. This allows the flavors to meld and the broth to develop its characteristic body.
I know it seems like a long simmer time, but this is where the soup builds its depth. The okra will break down slightly, releasing its slimy texture that thickens the broth naturally. Skim off any foam that rises to the surface during this time for a cleaner-tasting soup.
Add Aromatics and Prepare for Fish
Stir in the 0.5 cup sliced scallions and 0.25 cup fresh thyme sprigs. Cook for an additional 5 minutes to allow the thyme to release its piney aroma and the scallions to soften slightly. The thyme leaves should be bright green and fragrant when done.
Remove the pot from heat and let it sit for 5 minutes. This resting period allows the flavors to settle before adding the delicate fish. Taste the broth and adjust seasoning if needed—you want it to be well-seasoned but not overwhelmingly salty.
This is the moment that matters: the broth should be rich, aromatic, and properly balanced. The acidity from the tomatoes should be mellowed by the sweetness of the okra and the warmth of the spices. If it needs brightness, add 1-2 tablespoons of the 0.25 cup fresh lime juice now.
Cook the Fish to Flaky Perfection
Return the broth to medium heat and carefully add the 1.5 pound snapper or red snapper fillets. Cook for 8-10 minutes until the fish is opaque throughout and flakes easily with a fork. The fish should reach an internal temperature of 145°F.
Don't overcook the fish—it continues cooking slightly after removal from heat. You'll know it's done when it separates cleanly at the thickest part and the edges pull away from the bone easily. The broth should be hot but not boiling when you add the fish.
Real talk: if the fish starts to break apart too soon, reduce the heat slightly. The broth should be gently simmering, not rolling. This ensures tender, flaky fish rather than mushy pieces.
Finish and Serve
Remove the fish from the pot and set aside. Stir in the 0.5 cup fish dumplings and cook for 2-3 minutes until they float to the surface and are cooked through. The dumplings should be golden and crispy around the edges.
Return the fish to the pot and stir gently to distribute any accumulated juices. Add the remaining 0.25 cup fresh lime juice and cook for an additional 1 minute. This final acid touch brightens all the flavors and balances the richness of the soup.
Ladle the soup into bowls, dividing the fish evenly among servings. Each bowl should have tender fish, aromatic broth, and crisp fish dumplings. Serve immediately while the fish is at its peak flakiness and the broth is steaming hot.
Pro Tips For Making Jamaican Fish Soup
- Sear Fish First: Hit the snapper with a quick 2-minute sear in oil before adding liquid—this locks in flavor and keeps the fillets from falling apart later. I learned this the hard way after my first batch turned into mushy fish soup.
- Deseed Scotch Bonnets: Remove seeds and membranes from Scotch bonnet peppers—this cuts the heat by half without losing the fruity punch. Trust me, you don’t want your soup to taste like a ghost pepper bomb unless you’re going for that.
- Simmer, Don’t Boil: Keep the soup at a gentle simmer (tiny bubbles, not rolling) after adding the fish—boiling turns the tomatoes to mush and makes the fish dry. My grandmother’s rule: "If you can’t hear the water, you’re golden."
- Toast Scallions: Sauté the scallions in oil for 30 seconds before adding them to the pot—this caramelizes their edges and deepens their flavor. Sounds weird, but it works: the soup tastes richer without extra seasoning.
Perfect pairings for this dish
Beverage Pairings
A crisp Sorrel drink—Jamaica’s signature holiday punch—complements the soup’s spicy depth perfectly. Mix 2 cups hibiscus tea, 1 cup ginger beer, ½ cup lime juice, and 2 tbsp brown sugar for a tart, refreshing sip that cuts through the richness.
Serve chilled in mason jars for a festive touch. 🍹
Side Dish Harmony
Serve with steamed white rice—its mild starch soaks up the bold broth beautifully. For a heartier bite, add fried plantains (ripe for sweetness, green for crispness) or saltfish fritters for a protein-packed pairing. The contrast of textures makes every spoonful exciting.
Bread Pairings
Crusty Jamaican Johnny cakes—made with flour, baking powder, and a pinch of salt—are ideal for dipping. For a modern twist, try garlic bread with a hint of thyme to echo the soup’s flavors. Warm the bread just before serving to maintain crispness. 🥖
Garnish Finishes
Brighten each bowl with lime wedges and cilantro sprigs—their citrus and herbaceous notes elevate the dish. For extra flair, add toasted coconut flakes or scallion slices right before serving. These garnishes add color and freshness to every bite.
Spicy Kick Boost
For heat lovers, serve with Scotch bonnet hot sauce on the side. A dash of pepper sauce (like Maggi or Valvoline) adds another layer of Jamaican flavor. These condiments let guests customize their spice level without altering the soup’s balance. 🌶️
Nutrition facts
Frequently asked questions
What makes this Jamaican fish soup different from other Caribbean fish soups?
This recipe stands out with its perfect balance of Scotch bonnet peppers and thyme—key Jamaican spices that create a unique depth without overpowering the delicate fish. The addition of okra and callaloo gives it that signature Jamaican texture, while the lime juice finish keeps flavors bright and fresh. Most Caribbean soups rely more on coconut milk or heavier spices like curry powder, which this version intentionally avoids.
Can I substitute snapper with another type of fish?
While snapper or red snapper are ideal, cod, halibut, or mahi-mahi work beautifully too. Just ensure the fish is firm and flaky. Avoid delicate fish like tilapia—they can turn mushy. The key is using fish that stays tender when simmered for 8-10 minutes. If using frozen fish, thaw it overnight in the fridge for even cooking.
How do I adjust the spice level for kids or sensitive eaters?
For milder heat, remove the seeds from Scotch bonnet peppers and use only 1 pepper instead of 2. You can also strain the broth before adding the fish to reduce spice intensity. For a completely mild version, substitute the peppers with 1 diced bell pepper and skip the allspice berries. The broth will still be flavorful without being spicy!
Can I make this soup ahead of time?
This soup actually tastes better the next day as flavors deepen! Store in an airtight container in the fridge for up to 4 days. The broth will thicken slightly when reheated—just add ½ cup water if it becomes too concentrated. For freezing, cool completely first, then freeze for up to 3 months. Thaw overnight in the fridge before reheating gently on low heat.
What if I can't find Scotch bonnet peppers?
No problem! Use habanero or jalapeño peppers instead (remove seeds for less heat). For a milder option, try 1 teaspoon hot sauce or ½ teaspoon cayenne pepper. The flavor won't be identical, but you'll still get that signature Jamaican kick. If you want to stay true to the recipe, check Caribbean markets or the international aisle at major grocery stores for Scotch bonnets.
