Thieboudienne

Ceebu jën

Senegal's national dish: fish stuffed with parsley and garlic, braised with tomato and vegetables, then rice cooked in the red broth.

Recipe by I Want Some Food · Reviewed by the editorial kitchen. Native name preserved: Ceebu jën.

Start cooking
Measurement system
Prep
40 min
Cook
1 hr 40 min
Rest
None
Total
2 hr 20 min
Difficulty
A bit of work
Spice
Medium heat
Cost
A bit special$16–28 USD · indicative, not a store price
Thieboudienne

About

Thieboudienne is rice and fish, cooked in stages in one pot. Thick fish steaks are slit and stuffed with rof, a paste of parsley, garlic, chilli and stock cube, then fried. Onion and tomato purée are fried down in the same oil, water goes in, and the fish is braised with cabbage, carrot, sweet potato, aubergine and okra until everything is tender. The fish and vegetables come out; broken rice goes into the red broth and cooks until it drinks it all. The rice is piled on a platter with the fish and vegetables arranged on top. Done well, the bottom of the rice catches into a crust called xoñ, which is fought over.

What you'll need

22 ingredients. Tap each one once it's out on the bench.

0 of 22 ready
6 servings
  • Fish
  • Rof stuffing
  • Broth
  • Vegetables
  • Rice
  • To serve
  • Ingredients

Ingredients

Fish

Rof stuffing

Broth

Vegetables

Rice

  • Rice, broken rice, or jasmine rice pulsed briefly in a blender500 g

To serve

  • Tamarind, paste, dissolved in a little hot water (optional)20 g
  • Lime, wedges1

Ingredients

Scaling multiplies the written quantities. Baking still prefers a scale.

Steps

  1. Step 1

    Pound or blend the parsley, garlic, scotch bonnet, spring onion, one stock cube and the pepper into a coarse green paste. Cut a deep pocket into each fish steak and pack it with rof. Rub any extra over the fish and salt it.

    15 min

  2. Step 2

    Heat the oil in a wide heavy pot. Fry the fish 3 minutes a side until the outside is set and golden. Lift out carefully.

    10 min

    Watch: The fish will finish cooking in the broth. Do not cook it through now or it falls apart later.

  3. Step 3

    In the same oil, soften the onion for 6 minutes. Add the tomato purée and fry, stirring, until it darkens, 4 minutes. Add the blended tomato and cook 5 minutes more.

    15 min

  4. Step 4

    Pour in the water, add the second stock cube, salt and the whole chilli. Bring to a boil. Add the cabbage, carrot, sweet potato and aubergine. Simmer 15 minutes, then return the fish and add the okra. Simmer 15 minutes more until everything is tender.

    32 min

  5. Step 5

    Lift out the fish and all the vegetables onto a tray and keep warm, covered with foil. Measure the broth: you need about 900 ml for the rice. Ladle any extra into a bowl and keep it for the table.

    5 min

    Tip: The reserved broth, with tamarind stirred in, is poured over the rice as a sauce when serving.

  6. Step 6

    Wash the rice and steam it over the simmering broth for 10 minutes in a colander or steamer basket, covered. This parcooks it so it stays separate.

    10 min

  7. Step 7

    Stir the steamed rice into the 900 ml of broth. Cover tightly, foil under the lid, and cook on the lowest heat for 25 minutes until the liquid is absorbed. Let the bottom catch for the last 3 minutes on a slightly higher heat.

    28 min

    Watch: Do not stir once the rice is in. Lift the lid once at 20 minutes to check it is not dry; add a splash of hot water if it is.

  8. Step 8

    Pile the rice on a wide platter. Arrange the fish in the centre and the vegetables around it. Scrape the crust from the pot and put it on the side. Serve with lime wedges and the reserved broth.

    5 min

Nutrition

Per serving · estimate

Calories
624 kcal
Protein
41.4 g
Carbs
57.2 g
Fat
26.5 g
Saturated fat
2.9 g
Fibre
8.3 g
Sugar
14.2 g
Sodium
1408 mg

Calculated from canonical ingredient data (USDA FoodData Central averages and equivalent published tables). Estimates only.

Allergens

Informational only. Not a medical guarantee. Cross-contamination happens in real kitchens.

  • Fish
  • Pescatarian
  • Dairy-free
  • Gluten-free
  • Nut-free

Adapt this recipe

The original recipe stays as it is. Personal versions are labelled. Serving changes are simple maths.

Adaptations · 0 / 15 used. Resets 12 November.

Substitutions

  • White fish steaks → Whole small sea bream, cleaned

    Stuff the belly cavity with rof instead of a pocket. Reduce braising time to 20 minutes.

Tips

  • Broken rice is sold in Senegalese and Vietnamese shops. If you cannot find it, pulse jasmine rice in a blender for 2 seconds to break the grains. It absorbs the broth better than whole grains.
  • A tablespoon of fish sauce in the broth gets you some of the way to guedj.
  • Senegalese cooks fry the sweet potato and aubergine separately for a browner result. It is a step more and worth it if you have time.

History & culture

Ceebu jën is lunch, the main meal of the Senegalese day, eaten from a shared platter with the right hand or a spoon, each person working their own section. The cook distributes the vegetables and fish around the rice so everyone gets a share. It is on UNESCO's intangible heritage list and in every household and restaurant in Dakar and Saint-Louis.

Attributed to Penda Mbaye, a cook in nineteenth-century Saint-Louis, who used rice when the grain shortage pushed the French colony to import broken rice from Indochina. Broken rice stayed the preferred grain. The dish is the ancestor of jollof across West Africa.

Traditional — Senegalese cooks add guedj (fermented dried fish) and yet (fermented sea snail) to the broth for depth. They are hard to find abroad and are left out here; a spoon of fish sauce can stand in. Thiof (white grouper) is the classic fish; any thick firm white fish works.

Provenance: Editorial adaptation.

Questions about this recipe

Answers taken from this dish's times, amounts, swaps and tips.

How long does Thieboudienne take?

2 hr 20 min all in — 40 min prep, 1 hr 40 min cook. Cook and rest follow the method. Leftover storage and optional extra waits are not included.

How many does it serve?

The recipe is written for 6 people. Scale the ingredient list on the page if you are cooking for a different number.

How hard is it?

A bit of work.

How spicy is it?

Medium heat.

What allergens should I watch?

This recipe is labelled for Fish. Labels are informational — check the packets in your kitchen. This is not medical advice.

Does it fit a diet?

The published recipe is labelled Pescatarian, Dairy-free, Gluten-free, Nut-free.

7 more questions
What does it cost to cook?

A bit special — about $16–28 USD, as a grocery budget for this recipe, not a restaurant price.

What equipment do I need?

Dutch oven, Blender, Chef's knife, Cutting board.

How much salt do I put in?

The recipe lists Salt at 2 tsp.

What can I use instead?

White fish steaks → Whole small sea bream, cleaned. Stuff the belly cavity with rof instead of a pocket. Reduce braising time to 20 minutes.

What should I watch for?

The fish will finish cooking in the broth. Do not cook it through now or it falls apart later. Do not stir once the rice is in. Lift the lid once at 20 minutes to check it is not dry; add a splash of hot water if it is.

Any tips from this recipe?

Broken rice is sold in Senegalese and Vietnamese shops. If you cannot find it, pulse jasmine rice in a blender for 2 seconds to break the grains. It absorbs the broth better than whole grains. A tablespoon of fish sauce in the broth gets you some of the way to guedj. Senegalese cooks fry the sweet potato and aubergine separately for a browner result. It is a step more and worth it if you have time.

Can I use an air fryer?

This method is not written for an air fryer. The core technique on the page still applies.

Similar dishes

In this kitchen

Share card

Explore Senegal →

Before you start cooking

Your pantry, saved recipes and meal plans are stored on this device so the site works — that part can't be switched off. We count page visits and measure page speed. There are no ads. Separately, we can count anonymous feature usage. That part is your call, and it stays off unless you say yes.

What gets stored