Quick Recipe Version (TL;DR)
Quick Ingredients
- 3 cups (570 g) broken rice (riz cassé), rinsed and soaked
- 6 fish steaks (about 1.1 kg) red snapper or grouper
- 1/2 cup (120 ml) neutral oil, divided
- 1 small bunch parsley, 1 small onion, 2 scallions, 6 garlic cloves, 1/2 green bell pepper, 1 Scotch bonnet
- 1 tbsp lemon juice; kosher salt and black pepper
- 3 tbsp tomato paste; 1 cup (240 g) crushed tomatoes
- 6 cups (1.4 L) water or fish stock; 2 bay leaves
- 1/2 small green cabbage (4 wedges); 450 g cassava; 3 carrots; 2 small eggplants
- Lemon wedges; extra parsley for garnish
Do This
- 1) Rinse and soak rice 20 minutes; drain.
- 2) Blitz nokoss: parsley, onion, scallions, garlic, bell pepper, chili, lemon juice, 1 tbsp oil, salt, pepper.
- 3) Season fish with salt and 3 tbsp nokoss; sear in 2 tbsp oil 2–3 min/side; set aside.
- 4) In pot, warm 1/3 cup oil; sauté onion and 3 tbsp nokoss 2–3 min; fry tomato paste until brick red; add crushed tomatoes, stock, bay leaves, whole chili; simmer.
- 5) Add cabbage, cassava, carrots, eggplants; simmer 12–15 min; nest fish and cook to 63°C/145°F (8–10 min). Remove fish/veg; keep warm.
- 6) Reduce broth to 4 cups. Parboil rice 5 min in boiling water, drain, then cook rice in reserved broth on low 18–22 min. Rest 10 min; plate rice with fish/veg; drizzle nokoss; serve.
Why You’ll Love This Recipe
- Authentic Senegalese flavors: a rich tomato–fish broth perfumed with parsley–garlic nokoss.
- Balanced one-pot meal: tender fish, hearty vegetables, and deeply seasoned rice.
- Great for gatherings: designed to serve family-style on a large platter.
- Flexible and forgiving: swap vegetables and heat level to your taste.
Grocery List
- Produce: Parsley (1 bunch), onions (2), scallions (1 bunch), garlic (6 cloves), green bell pepper (1), Scotch bonnet or habanero (2), green cabbage (1 small), cassava/yuca (450 g), carrots (3), small eggplants (2), lemons (2)
- Dairy: None
- Pantry: Broken rice (3 cups), tomato paste, crushed tomatoes, neutral oil (peanut/vegetable), bay leaves, kosher salt, black pepper, water or fish stock
Full Ingredients
Nokoss (Parsley–Garlic Aromatic Paste)
- 1 packed cup (30 g) flat-leaf parsley leaves
- 1 small yellow onion, roughly chopped (about 120 g)
- 6 garlic cloves
- 2 scallions, trimmed
- 1/2 green bell pepper, roughly chopped (about 75 g)
- 1 small Scotch bonnet or habanero chili, stemmed (seeded for less heat)
- 1 tbsp fresh lemon juice
- 1 tbsp neutral oil
- 1 tsp kosher salt
- 1/2 tsp freshly ground black pepper
Fish
- 6 skin-on fish steaks (red snapper, grouper, or similar), 3/4–1 inch thick (about 1.1 kg)
- 1 tsp kosher salt
- 2 tbsp neutral oil (for searing)
- 3 tbsp nokoss (from above) for seasoning the fish
Tomato–Fish Broth and Vegetables
- 1/3 cup (80 ml) neutral oil
- 1 medium onion, thinly sliced
- 3 tbsp tomato paste
- 1 cup (240 g) crushed tomatoes or passata
- 6 cups (1.4 L) water or fish stock
- 2 bay leaves
- 1 whole Scotch bonnet or habanero chili
- 1/2 small green cabbage (about 600 g), cut into 4 wedges, core intact
- 450 g cassava (yuca), peeled and cut into 5 cm / 2-inch chunks
- 3 medium carrots, peeled and halved
- 2 small globe eggplants (about 400 g total), halved lengthwise
- 1 tsp kosher salt, plus more to taste
- Optional: 1/2 tsp smoked paprika for subtle smokiness
Rice and Finish
- 3 cups (570 g) broken rice (riz cassé)
- 1 tsp kosher salt (for parboiling water)
- 4 cups (960 ml) reserved tomato–fish broth (measured after simmering)
- 1 tbsp neutral oil (to toss with drained rice)
- Lemon wedges, extra chopped parsley, and 2–3 tbsp remaining nokoss for serving

Step-by-Step Instructions
Step 1: Rinse and soak the broken rice
Place the rice in a bowl and rinse under cool water, swishing until the water runs mostly clear (about 4–5 rinses). Cover with fresh water and soak for 20 minutes to soften the broken grains. Drain well and set aside to air-dry while you start the stew base.
Step 2: Make the nokoss aromatic paste
In a food processor or mortar and pestle, combine parsley, onion, garlic, scallions, bell pepper, chili, lemon juice, 1 tbsp oil, 1 tsp salt, and 1/2 tsp pepper. Pulse to a coarse paste. You’ll use part to season the fish and the rest to perfume the broth and for drizzling at the end.
Step 3: Season and sear the fish
Pat fish steaks dry. Rub with 1 tsp kosher salt and 3 tbsp nokoss. Let sit 10–15 minutes while you heat a wide heavy pot (28–30 cm) over medium-high heat. Add 2 tbsp oil; sear fish 2–3 minutes per side until lightly browned. Transfer to a plate (fish will finish in the broth). Aim to cook fish later to an internal temperature of 63°C/145°F.
Step 4: Build the tomato base
In the same pot, lower heat to medium and add 1/3 cup oil. Stir in the sliced onion and 3 tbsp nokoss; cook 2–3 minutes until fragrant. Add tomato paste and fry, stirring, until it turns a deep brick red and the oil stains red, 3–5 minutes. Stir in crushed tomatoes, then pour in 6 cups stock/water, add bay leaves and the whole chili. Bring to a gentle boil, then reduce to a lively simmer (about 95°C/203°F).
Step 5: Simmer vegetables and poach the fish
Add cabbage wedges, cassava, carrots, and eggplants. Season with 1 tsp salt and optional smoked paprika. Simmer uncovered 12–15 minutes. Nestle the seared fish into the pot and simmer 8–10 minutes more, until fish reaches 63°C/145°F and flakes. Gently lift out fish and vegetables to a warm platter; tent loosely with foil to keep warm. Keep the broth at a steady simmer.
Step 6: Parboil the rice
Meanwhile, bring a separate large pot of water to a rolling boil (100°C/212°F). Salt with 1 tsp kosher salt. Add the soaked, drained rice and parboil for 5 minutes. Drain thoroughly and toss with 1 tbsp oil to prevent sticking.
Step 7: Measure broth and steam the rice
Ladle the tomato–fish broth into a measuring jug. You need exactly 4 cups (960 ml). If you have more, return to the pot and boil to reduce; if you have less, top up with hot water. Return the 4 cups to the wide pot. Add the parboiled rice, spreading it evenly. Bring to a gentle simmer over medium heat, then reduce to low, cover with a sheet of parchment and a tight lid, and cook 18–22 minutes until the liquid is absorbed and the grains are tender. Avoid lifting the lid early.
Step 8: Rest, garnish, and serve family-style
Turn off the heat and let the rice rest, covered, for 10 minutes. Fluff with a fork. Mound the rice onto a large warm platter. Arrange the cooked cabbage, cassava, carrots, eggplants, and fish steaks on top. Spoon a few tablespoons of the remaining nokoss over the fish and rice. Garnish with chopped parsley and serve with lemon wedges and the whole chili on the side for those who like extra heat.
Pro Tips
- Fry the tomato paste until it’s deep red and aromatic; this step builds the signature color and depth.
- Use thick fish steaks so they won’t break during simmering. Move them with a wide spatula or slotted spoon.
- Measure the broth for the rice. After parboiling, 3 cups rice cooks perfectly in 4 cups flavorful broth.
- No broken rice? Pulse long-grain rice 2–3 times in a food processor to create a “broken” texture.
- For gentle heat, leave the chili whole. For a fiery version, pierce it once before adding to the pot.
Variations
- Ceebu Yapp (Meat): Swap fish with beef chunks (sear well), and simmer until tender before proceeding with vegetables.
- Vegetarian Thieb: Omit fish; add hearty veg like sweet potato and okra. For ocean-like depth, simmer broth with a strip of kombu and add 1 tsp smoked paprika.
- Brown Rice: Use parboiled brown rice; extend final covered cook to 30–35 minutes, adding up to 1/2 cup extra hot broth if needed.
Storage & Make-Ahead
Refrigerate leftovers in airtight containers for up to 4 days. Reheat rice and vegetables gently with a splash of water, covered, on the stovetop or in the microwave. The nokoss paste can be made 2 days ahead and refrigerated; bring to room temperature before using. You can also cook the tomato–fish broth with vegetables a day ahead; remove fish and vegetables once tender, refrigerate separately, and rewarm before cooking the rice in the reserved broth.
Nutrition (per serving)
Approximate: 780 calories; 42 g protein; 103 g carbohydrates; 22 g fat; 5 g fiber; 980 mg sodium. Values will vary with fish type and oil absorption.
