Mafé

Maafe

Senegalese peanut stew of beef with tomato, sweet potato, carrot and cabbage in a thick groundnut sauce, over rice.

Recipe by I Want Some Food · Reviewed by the editorial kitchen. Native name preserved: Maafe.

Start cooking
Measurement system
Prep
20 min
Cook
1 hr 40 min
Rest
None
Total
2 hr
Difficulty
Easy
Spice
Mild
Cost
A bit special$16–28 USD · indicative, not a store price
Mafé

About

Mafé is a slow stew in which peanut butter and tomato purée thicken into a rich, glossy sauce around meat and root vegetables. Beef is browned with onion and garlic, tomato purée is fried in, water and stock cube go on, and the meat simmers until nearly tender. Peanut butter loosened with hot broth is stirred in with sweet potato, carrot and cabbage, and everything cooks until the oil separates and the sauce coats the back of a spoon. A whole scotch bonnet goes in for perfume rather than heat. Served over white rice. It is thicker and more peanut-heavy than Ghanaian groundnut soup.

What you'll need

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

0 of 16 ready
6 servings

Ingredients

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

Steps

  1. Step 1

    Heat the oil in a heavy pot and brown the beef in two batches. Set aside. Soften the onion and garlic in the same pot for 6 minutes.

    15 min

  2. Step 2

    Add the tomato purée and fry, stirring, until it darkens and smells sweet, 3 minutes. Add the chopped tomato and cook 3 minutes more.

    6 min

  3. Step 3

    Return the beef with the water, stock cubes, bay leaf and salt. Bring to a simmer, cover and cook 50 minutes.

    50 min

  4. Step 4

    Put the peanut butter in a bowl and whisk in hot liquid from the pot, a ladle at a time, until smooth and pourable. Stir it back into the stew.

    5 min

    Tip: Never add peanut butter straight to the pot. It sinks and scorches.

  5. Step 5

    Add the sweet potato, carrot, cabbage and whole chilli. Simmer uncovered, stirring from the bottom every few minutes, until the vegetables are tender and orange oil has risen to the surface, 30 to 35 minutes.

    35 min

    Watch: The sauce catches easily once the peanut is in. Keep the heat low and scrape the base as you stir.

  6. Step 6

    Cook the rice while the stew finishes. Remove the chilli and bay. Taste for salt. The sauce should be thick enough to hold a line drawn through it. Serve over rice.

    5 min

Nutrition

Per serving · estimate

Calories
783 kcal
Protein
48.7 g
Carbs
49.9 g
Fat
43.6 g
Saturated fat
12 g
Fibre
7.3 g
Sugar
12.1 g
Sodium
896 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.

  • Peanuts
  • Dairy-free
  • Gluten-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

  • Beef → Chicken thighs on the bone

    Brown them the same way and cut the first simmer to 20 minutes.

Tips

  • Mafé thickens as it cools. Loosen leftovers with hot water, not stock.
  • Add a tablespoon of fish sauce or a dried smoked fish with the water for the depth Senegalese cooks get from guedj.
  • For a vegetable mafé, skip the beef and add 200 g more sweet potato and some turnip. Simmer 40 minutes in total.

History & culture

Mafé is weekday lunch across Senegal and much of Mali and Gambia, eaten from a shared bowl. It is the dish Senegalese students make abroad because the ingredients are everywhere. Lamb mafé is a Tabaski dish; chicken and vegetable mafé are everyday. The Bambara of Mali claim the original.

Peanuts came to Senegal through Portuguese trade and became the colony's cash crop under the French in the nineteenth century, grown for oil and export. Mafé grew around that surplus, building on older sauces made with indigenous Bambara groundnuts.

Traditional

Provenance: Editorial adaptation.

Questions about this recipe

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

How long does Mafé take?

2 hr all in — 20 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 bowls. Scale the ingredient list on the page if you are cooking for a different number.

How hard is it?

Easy.

How spicy is it?

Mild.

What allergens should I watch?

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

Does it fit a diet?

The published recipe is labelled Dairy-free, Gluten-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, Mixing bowl, Chef's knife.

How much salt do I put in?

The recipe lists Salt at 1 tsp.

What can I use instead?

Beef → Chicken thighs on the bone. Brown them the same way and cut the first simmer to 20 minutes.

What should I watch for?

The sauce catches easily once the peanut is in. Keep the heat low and scrape the base as you stir.

Any tips from this recipe?

Mafé thickens as it cools. Loosen leftovers with hot water, not stock. Add a tablespoon of fish sauce or a dried smoked fish with the water for the depth Senegalese cooks get from guedj. For a vegetable mafé, skip the beef and add 200 g more sweet potato and some turnip. Simmer 40 minutes in total.

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