Kenya · Africa

Kenyan Fish Recipe: Coconut-Tomato Stew with Tilapia

Updated November 3, 2026

Total time
50 min
prep 20 min · cook 30 min
Serves
4
portions as written
Cuisine
Kenya
Africa

Jump to recipe

Kenyan Fish Recipe: Coconut-Tomato Stew with Tilapia

This Kenyan fish recipe is a coastal-style stew of tender fish simmered in coconut milk, tomatoes, onion, and warm spices. It is served with rice or another simple starch to soak up the sauce; versions vary between households and regions, and this practical home-cook version keeps the flavors balanced and the fish intact.

Ingredients

  • 1½ lb (680 g) skinless tilapia fillets, cut into 4 portions; cod or snapper also works
  • ¾ tsp (4 g) fine salt, divided
  • ¼ tsp (0.5 g) ground black pepper
  • 2 tbsp (30 ml) neutral cooking oil, such as sunflower or canola oil
  • 1 medium yellow onion, finely chopped, about 1 cup (150 g)
  • 3 garlic cloves, minced, about 1 tbsp (9 g)
  • 1 tbsp (6 g) finely grated fresh ginger
  • 2 medium ripe tomatoes, chopped, about 2 cups (300 g)
  • 1 tsp (2 g) ground coriander
  • ½ tsp (1 g) ground cumin
  • ½ tsp (1.5 g) ground turmeric
  • ¼ tsp (0.5 g) cayenne pepper, or less to taste
  • 1 can unsweetened coconut milk, 13.5 fl oz (400 ml), well stirred
  • ½ cup (120 ml) water
  • 1 tbsp (15 ml) fresh lime juice, plus lime wedges for serving
  • ¼ cup (10 g) chopped fresh cilantro leaves, plus a little extra to garnish

Instructions

  1. Prepare and season the fish. Pat the fillets dry with paper towels so they brown rather than steam. Cut them into portions of roughly equal thickness, then season both sides with about ½ teaspoon of the salt and all the black pepper. Set aside while you prepare the vegetables and spices; do not leave raw fish at room temperature for more than 2 hours.
  2. Chop the aromatics. Finely chop the onion and tomatoes, mince the garlic, and grate the ginger. Measure out the coriander, cumin, turmeric, and cayenne before you begin cooking. Having everything ready is useful here because the garlic and ground spices need only a short time in the hot pan.
  3. Brown the fish briefly. Heat the oil in a wide, deep skillet or sauté pan over medium-high heat. When it shimmers, add the fish in a single layer, working in batches if needed. Cook for about 2 minutes per side, just until the surfaces are lightly golden; the centers will finish cooking in the sauce. Transfer the pieces to a clean plate. If a piece starts to break when you turn it, use a thin spatula and avoid forcing it.
  4. Cook the onion and spices. Lower the heat to medium. Add the onion to the same pan and cook for about 4 minutes, stirring occasionally, until softened and beginning to turn translucent. Stir in the garlic and ginger and cook for 30 seconds. Add the coriander, cumin, turmeric, and cayenne; stir for about 30 seconds, just until fragrant. If the pan looks dry, add a teaspoon of water rather than letting the spices scorch.
  5. Make the coconut-tomato sauce. Add the chopped tomatoes and the remaining ¼ teaspoon salt. Cook for about 5 minutes, stirring and gently pressing some tomato pieces with the spoon, until the tomatoes soften and release their juices. Pour in the coconut milk and water, stir to combine, and bring the sauce to a gentle simmer. Simmer uncovered for about 5 minutes, stirring once or twice. Keep it at a quiet bubble; a hard boil can make the sauce separate or reduce too quickly.
  6. Finish cooking the fish. Nestle the browned fillets into the sauce and spoon a little sauce over each piece. Cover the pan and simmer gently for about 7 minutes, or until the thickest part of each fillet reaches 145°F (63°C) on a food thermometer. This is the USDA FSIS safe minimum internal temperature for fish. Thicker pieces may need a few extra minutes, so check each portion and avoid relying only on the clock.
  7. Season and serve. Turn off the heat and gently stir in the lime juice and chopped cilantro. Taste the sauce and add a little more salt, lime, or cayenne if needed. Let the pan sit for 2 minutes so the sauce settles, then serve the fish with plenty of sauce. Lift the pieces carefully to keep them whole.

Tips

  • Choose a firm fish. Tilapia is mild and widely available, while snapper, cod, haddock, or another firm white fish can work. Very thin fillets cook quickly and may break apart, so add them later and start checking their temperature early.
  • Use full-fat coconut milk for a richer sauce. Light coconut milk will make the stew thinner and less creamy. Shake or stir the can well before measuring, since the thick cream can separate from the liquid during storage.
  • Keep the sauce at a gentle simmer. Vigorous boiling can break delicate fish into flakes and may cause coconut milk to look grainy or separate. If the sauce becomes too thick before the fish is done, add water a tablespoon at a time.
  • Adjust the heat carefully. Cayenne can be left out or reduced for a mild stew. For more heat, serve sliced fresh chili at the table; adding it at the end makes it easier for everyone to choose their own level.

Serving Suggestions

Serve the stew hot over steamed white rice, which catches the coconut-tomato sauce without competing with the fish. Coconut rice is another fitting option if you want a more fragrant, rich plate, but use a lighter hand with coconut in the rice so the meal does not become too heavy. Ugali, a firm maize porridge, is a traditional-style accompaniment in many East African meals and can be torn into small pieces to scoop up the sauce.

For a lighter plate, offer the fish with boiled potatoes, chapati, or a simple side of sautéed greens. A crisp cucumber and tomato salad or sliced avocado adds freshness alongside the warm spices. Put lime wedges on the table, and let each person add a squeeze just before eating. If serving guests, bring the pan to the table and spoon the sauce over the fish at the last moment, rather than stirring the fillets and risking that they break.

Variations

For a coastal Swahili-inspired flavor, add a small pinch of ground cardamom or cinnamon along with the other spices. These spices are optional and should stay in the background; too much can make the sauce taste sweet or perfume-like. Some versions use a prepared curry blend, while others keep the seasoning to a few individual spices, so use a mild curry powder in place of the coriander, cumin, turmeric, and cayenne if that is what you have. The flavor will be less freshly layered and the salt level may differ, so check the label and season at the end.

If fresh tomatoes are out of season, substitute 1 cup (240 g) canned chopped tomatoes for the two fresh tomatoes. The sauce may need an extra minute or two to simmer and will taste slightly more concentrated. For a less creamy stew, replace up to half of the coconut milk with water or unsalted fish stock; the result will be lighter and less coconut-forward. You can also use boneless firm white fish steaks, but check them carefully with a thermometer because thickness, not just the cut, determines cooking time.

Storage and Reheating

Refrigerate leftovers within 2 hours of cooking, transferring them to a shallow airtight container so they cool promptly. Keep the fish and sauce together and use within 3 to 4 days. The sauce may thicken in the refrigerator, and the fish will be more delicate after storage, so avoid stirring it vigorously.

For best texture, reheat only the amount you plan to eat. Warm it gently in a covered saucepan over low heat, adding a tablespoon or two of water if the sauce has thickened. Turn the fish once, carefully, and heat leftovers to 165°F (74°C), checking with a food thermometer. You can also microwave a portion in a covered microwave-safe dish, stirring the sauce around the fish partway through and checking the center for 165°F (74°C). Freezing is possible for up to 2 months in a freezer-safe container, although the fish may become softer and the coconut sauce may separate slightly when thawed. Thaw overnight in the refrigerator and reheat thoroughly; do not leave cooked fish at room temperature to thaw.

Frequently Asked Questions

Can I make this Kenyan fish recipe with frozen fish?

Yes. Thaw frozen fillets completely in the refrigerator, then pat them very dry before seasoning. Excess water can prevent browning and thin the sauce. If the fillets are still icy in the middle, wait until they are fully thawed rather than putting them straight into the pan, since unevenly thawed fish cooks inconsistently.

Can I skip browning the fish?

Yes, but the brief sear adds flavor and helps the fillets hold together as they finish in the sauce. To skip it, make the sauce as directed, then place the raw seasoned fish into the gently simmering sauce, cover, and cook until the thickest part reaches 145°F (63°C). The fish will be softer and the sauce will have a milder, less browned flavor.

How do I keep the fish from falling apart?

Use fillets of similar thickness, dry them before searing, and avoid moving them repeatedly in the pan. Brown them briefly, then handle them with a thin spatula and spoon sauce over the top instead of stirring. A wide pan gives the portions room, while a low simmer cooks them more gently than a rolling boil.

What can I use instead of fresh lime?

Use 1 tablespoon (15 ml) lemon juice or mild vinegar if lime is unavailable. Lemon gives a similar fresh citrus note; vinegar is sharper, so start with 2 teaspoons (10 ml), taste, and add more only if needed. Add the acidic ingredient after cooking so its brightness remains clear.

Is this stew very spicy?

As written, it has only mild warmth from ¼ teaspoon cayenne, and you can omit it entirely. Ground spices such as cayenne vary in strength, so taste the sauce before adding the fish and adjust gradually. If you are serving people with different preferences, offer fresh chili separately instead of increasing the heat in the whole pan.

Can I prepare the sauce ahead?

You can make the coconut-tomato sauce up to 2 days ahead, cool it promptly, and refrigerate it in a covered container. Reheat it to a gentle simmer, then add freshly seasoned fish and cook it to 145°F (63°C). Cooking the fish only when you are ready to serve gives it a better texture than storing it in the sauce for several days.

Related

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).