Hot Indian fish soup is a lively, coconut-based broth with flaky white fish, tomatoes, tamarind, and warming spices. This version draws on flavors found in several Indian coastal cuisines, where fish soups and curries vary by region and household; it is served hot with rice or bread to catch the fragrant broth.
Ingredients
- 1½ lb (680 g) firm white fish fillets, such as cod, haddock, or pollock, cut into 1½-inch (4 cm) pieces
- 1 tablespoon (15 ml) neutral oil, such as canola or sunflower oil
- 1 medium yellow onion, finely diced, about 1 cup (150 g)
- 1 tablespoon (15 g) finely grated fresh ginger
- 3 garlic cloves, finely chopped, about 1 tablespoon (9 g)
- 2 small green chilies, thinly sliced, about 1 tablespoon (10 g); use 1 for milder soup
- 8 fresh curry leaves, about 2 g, optional
- 1 teaspoon (5 ml; 2 g) brown or black mustard seeds
- 1 teaspoon (5 ml; 2 g) ground cumin
- 1 teaspoon (5 ml; 2 g) ground coriander
- ½ teaspoon (2.5 ml; 1.5 g) ground turmeric
- ½ teaspoon (2.5 ml; 1 g) cayenne pepper, or less to taste
- 1 medium ripe tomato, diced, about 1 cup (180 g)
- 1 can unsweetened coconut milk, 13.5 oz (400 ml), well shaken
- 2 cups (480 ml) water or low-sodium fish or vegetable stock
- 1 tablespoon (15 g) tamarind paste
- 1 teaspoon (5 ml; 6 g) fine salt, plus more to taste
- ¼ teaspoon (1.25 ml; 0.5 g) freshly ground black pepper
- 1 tablespoon (15 ml) fresh lime juice, plus lime wedges for serving
- ¼ cup (10 g) chopped fresh cilantro leaves
Instructions
- Prepare the ingredients. Cut the fish into evenly sized pieces and check for any pin bones, removing them with clean tweezers. Pat the fish dry and keep it refrigerated while you chop the onion, ginger, garlic, chilies, and tomato and measure the spices. Shake the coconut milk can before opening it. If using concentrated tamarind paste, stir it with a spoonful of the measured water until smooth.
- Start the spice base. Set a medium, heavy-bottomed pot over medium heat and add the oil. Once it shimmers, add the mustard seeds and cook for about 30 seconds, until they begin to pop. Add the curry leaves, if using, and stand back slightly because they may crackle in the hot oil. Stir in the onion and cook for about 3 minutes, stirring often, until softened but not deeply browned.
- Cook the aromatics and tomato. Add the ginger, garlic, green chilies, cumin, coriander, turmeric, and cayenne. Stir for 1 minute, just until fragrant; avoid letting the garlic or ground spices scorch. Add the diced tomato and cook for 1 minute, stirring and scraping the bottom of the pot. The tomato does not need to disappear into a paste.
- Simmer the broth. Pour in the coconut milk and water or stock. Stir in the tamarind, salt, and black pepper. Bring the liquid just to a gentle simmer, then reduce the heat so it bubbles softly rather than boiling hard. Simmer uncovered for 8 minutes, stirring once or twice. Taste a spoonful of broth and adjust the salt or tamarind before adding the fish; it should be savory, lightly tart, and fragrant.
- Poach the fish and finish. Lower the fish pieces into the simmering broth in a single layer as much as possible. Simmer gently for 8 minutes, turning the pieces once with a spoon if needed; avoid vigorous stirring, which can break them apart. Check the thickest piece with a food thermometer: the USDA FSIS safe minimum internal temperature for fish is 145°F (63°C). Once it reaches that temperature and flakes easily, remove the pot from the heat. Stir in the lime juice and cilantro, taste once more, and serve hot. If a piece needs more time to reach 145°F (63°C), continue simmering briefly and check again.
Tips
- Choose fish that holds its shape. Cod, haddock, pollock, and other firm white fillets work well. Very thin fillets can break up before the broth is ready, so cut them into larger pieces and handle them gently. If the fish is frozen, thaw it fully in the refrigerator and pat it dry before cutting.
- Adjust heat gradually. Green chilies vary in strength, and their seeds and inner membranes carry much of the heat. Start with one chili and no cayenne for a gentler pot, then add chili at the table if some diners want more. You can also remove the seeds before slicing.
- Know the traditional ingredients and practical swaps. Fresh curry leaves are widely used in South Indian cooking but can be hard to find; omit them if unavailable, or add one small bay leaf for a different, more herbal aroma, removing it before serving. Tamarind paste supplies a rounded sourness. If you cannot find it, use 1 tablespoon (15 ml) lime juice in the soup, then taste: lime is brighter and less deep, so add it at the end rather than simmering it.
- Keep the broth gentle. A rolling boil can cause coconut milk to separate and can make fish pieces fall apart. Once the broth reaches a simmer, lower the heat and add the fish only when you are ready to watch it and check its temperature.
Serving Suggestions
Ladle the soup into warm bowls, making sure each serving gets fish, tomato, and plenty of broth. Offer extra lime wedges and chopped cilantro so everyone can adjust the brightness and fresh-herb flavor at the table. Steamed basmati rice is a simple accompaniment; plain rice absorbs the broth without competing with the spices. For a bread option, serve warm chapati, roti, or naan for dipping. A crisp cucumber salad or sliced cucumber with a little salt provides a cool contrast to the chili heat. If serving a group, keep any rice in a separate bowl rather than stirring it into the pot, so the soup remains brothy and leftovers are easier to store.
Variations
Make it less rich: Replace half the coconut milk with an additional 1 cup (240 ml) water or stock. The broth will be lighter and less creamy, so taste for salt and tamarind after simmering. For a more tomato-forward soup, add one extra diced tomato and reduce the coconut milk by ½ cup (120 ml).
Use another seafood option: Peeled, deveined shrimp can replace the fish. Add medium shrimp near the end and cook until opaque and firm, checking the thickest shrimp with a thermometer for the same 145°F (63°C) safe minimum. Small scallops can also work, though they cook quickly; add them in a single layer and avoid overcooking. Do not simmer mixed seafood for the full fish cooking time without checking individual pieces.
Change the spice profile: For a warmer, less sharp flavor, use ½ teaspoon (2.5 ml) freshly ground black pepper in place of the cayenne and reduce or omit the green chili. A pinch of ground fenugreek can add a slightly bitter, maple-like note, but use no more than ⅛ teaspoon (0.6 ml) because it can dominate. For a thicker, more substantial bowl, add 1 cup (150 g) diced potato when the broth begins its 8-minute simmer; cook until tender before adding the fish, allowing extra time as needed.
Storage and Reheating
Cool leftovers promptly and refrigerate them within 2 hours of cooking. Transfer the soup to shallow, airtight containers so it cools more quickly, and keep it refrigerated for 3 to 4 days. Fish can become softer after storage, but the broth remains suitable to reheat gently. For longer storage, freeze in airtight, freezer-safe containers for up to 2 months for best quality; leave a little room at the top because liquid expands as it freezes. Thaw frozen soup in the refrigerator, not on the counter.
Reheat only the portion you plan to eat in a saucepan over medium-low heat, stirring gently until steaming throughout. Avoid a hard boil, which can break up the fish. Check that leftovers reach 165°F (74°C), the recommended reheating temperature, with a food thermometer. If the broth has thickened in the refrigerator, stir in a splash of water or stock. Discard soup that has been left at room temperature for more than 2 hours, or for more than 1 hour when the room is above 90°F (32°C).
Frequently Asked Questions
Which fish is best for hot Indian fish soup?
Choose a mild, firm white fish that can be cut into large chunks, such as cod, haddock, or pollock. Fresh or properly thawed frozen fillets both work. Avoid very delicate fillets if you want distinct pieces in the bowl, and check carefully for pin bones before cooking.
Can I make the soup without coconut milk?
Yes. Replace it with an equal amount of water or stock for a thinner, less creamy broth. Coconut milk is not just a thickener; it softens the chili and spice flavors, so you may want to begin with less cayenne and adjust the salt and lime at the end.
How can I tell when the fish is done?
Use a food thermometer in the thickest piece and cook fish to 145°F (63°C), the USDA FSIS safe minimum. Properly cooked fish is opaque and flakes easily, but appearance alone is less precise, especially in a richly colored broth. Check a large piece rather than relying only on the timing.
Can I prepare the broth ahead?
Yes. Make the broth through the simmering step, cool it promptly, and refrigerate it in a covered container for up to 3 days. Reheat it to a gentle simmer, then add freshly cut fish and cook until it reaches 145°F (63°C). This keeps the fish from becoming overcooked while the broth is stored.
Why does my coconut broth look separated?
A little surface oil or graininess can happen if coconut milk is boiled vigorously, especially if the can was not well mixed. Keep the broth at a gentle simmer and stir it before adding the fish. If it separates, lower the heat and whisk the broth gently; it may look smoother, though the texture can remain slightly less even.
Can I make this soup ahead and reheat it with the fish already in it?
You can, but fish tends to firm up and break into smaller pieces during reheating. For the best texture, store the broth separately from uncooked fish and poach the fish when you are ready to eat. If the soup is already assembled, reheat gently and bring leftovers to 165°F (74°C), stirring as little as possible.
Related
- Golden Thai Soup with Coconut Milk, Chicken, and Lime
- Cajun Sausage Stew with Potatoes, Okra and Bell Peppers
- Mexican Goat Soup: A Slow-Simmered, Flavorful Birria
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).