Quick Recipe Version (TL;DR)
Quick Ingredients
- 1 large onion, 2 in (5 cm) ginger, 3 garlic cloves, 1 Scotch bonnet/habanero
- 2 tbsp neutral oil
- 3 tbsp tomato paste; 2 large tomatoes (or 1 can/400 g crushed)
- 6 cups (1.4 L) low-sodium chicken stock or water
- 1 tsp dried thyme; 1 tsp mild curry powder; 1/2 tsp smoked paprika (optional)
- 1 tsp fine sea salt, 1/2 tsp black pepper (plus more to taste)
- Chicken option: 2–2.5 lb (900–1100 g) bone-in pieces; OR Fish option: 1.5 lb (680 g) firm white fish
- 1 cup (260 g) natural smooth peanut butter + 2 cups (480 ml) warm water
- Rice balls: 2 cups (380 g) jasmine/medium-grain rice, 5 cups (1.2 L) water, 1/2 tsp salt
- Garnish: chopped roasted peanuts, sliced scallions, chile rings
Do This
- 1. Blend onion, ginger, garlic, and chile with 1/2 cup water until smooth.
- 2. Season chicken (or fish) with salt and half the blend; marinate 15 minutes.
- 3. Brown chicken in oil 6–8 minutes; remove. Fry tomato paste 2 minutes, then add remaining blend and tomatoes; cook 8–10 minutes.
- 4. Add stock, thyme, curry, paprika, pepper, and chicken; simmer 30–35 minutes (for fish, simmer base 20 minutes first).
- 5. Whisk peanut butter with warm water; simmer separately 12–15 minutes until glossy.
- 6. Stir peanut slurry into soup; simmer 10 minutes. If using fish, add now and cook 8–10 minutes.
- 7. Cook rice with 5 cups water and salt until very soft; mash and shape into 6–8 balls. Serve with soup and garnishes.
Why You’ll Love This Recipe
- Authentic, warmly spiced Ghanaian comfort food with a silky peanut-tomato broth.
- Versatile: make it with tender chicken or delicate fish.
- Cooked peanut slurry gives deep roasted flavor without bitterness.
- Paired with soft omo tuo rice balls for a satisfying, scoopable meal.
Grocery List
- Produce: Onion, fresh ginger, garlic, Scotch bonnet or habanero, ripe tomatoes (or canned), scallions, fresh chile for garnish
- Dairy: None
- Pantry: Natural peanut butter (unsweetened), tomato paste, jasmine or medium-grain rice, neutral oil, chicken stock or bouillon, dried thyme, mild curry powder, smoked paprika (optional), fine sea salt, black pepper, roasted peanuts
Full Ingredients
Aromatic Blend
- 1 large onion (about 200 g), roughly chopped
- 2-inch (5 cm) piece fresh ginger, peeled and chopped
- 3 garlic cloves
- 1 Scotch bonnet or habanero chile (seeded for less heat)
- 1/2 cup (120 ml) water for blending
Soup Base
- 2 tbsp neutral oil (sunflower, canola, or peanut)
- 3 tbsp tomato paste
- 2 large ripe tomatoes, chopped (or 1 can/14.5 oz/400 g crushed tomatoes)
- 6 cups (1.4 L) low-sodium chicken stock or water
- 1 tsp dried thyme
- 1 tsp mild curry powder
- 1/2 tsp smoked paprika (optional)
- 1 tsp fine sea salt, plus more to taste
- 1/2 tsp freshly ground black pepper
Protein (choose one)
- Chicken option: 2–2.5 lb (900–1100 g) bone-in chicken pieces (thighs/drumsticks)
- Fish option: 1.5 lb (680 g) firm white fish (tilapia, red snapper), cut into large chunks; 1 tsp lemon juice; 1/2 tsp salt
Peanut Slurry
- 1 cup (260 g) natural smooth peanut butter (unsweetened)
- 2 cups (480 ml) warm water
Omo Tuo (Soft Rice Balls)
- 2 cups (380 g) jasmine or medium-grain rice, rinsed
- 5 cups (1.2 L) water, plus extra as needed
- 1/2 tsp fine sea salt
Optional Garnishes
- 1/4 cup roasted peanuts, chopped
- 2 scallions, thinly sliced
- Thin chile rings (Scotch bonnet/habanero)

Step-by-Step Instructions
Step 1: Blend the aromatics
Add the onion, ginger, garlic, Scotch bonnet (seeded if you prefer milder heat), and 1/2 cup water to a blender. Blend until very smooth. This flavorful puree seasons the protein and forms the backbone of the soup.
Step 2: Season the protein
Pat the chicken dry and place in a bowl. Sprinkle with 1/2 tsp salt and half of the aromatic blend; toss to coat and let stand 15 minutes. For the fish option, toss fish with lemon juice, 1/2 tsp salt, and 2 tablespoons of the blend; refrigerate and hold back the fish until the end so it stays delicate.
Step 3: Build the tomato base
Heat the oil in a large heavy pot over medium-high heat. If using chicken, brown the pieces 3–4 minutes per side until lightly golden; transfer to a plate. Add tomato paste to the pot and cook, stirring, 2 minutes until brick red and fragrant. Stir in the remaining aromatic blend and chopped tomatoes (or canned). Cook 8–10 minutes, stirring often, until reduced, shiny, and no longer raw-smelling.
Step 4: Simmer the broth with the protein
Add stock, thyme, curry powder, smoked paprika (if using), black pepper, and 1/2 tsp more salt. If using chicken, return it (and any juices) to the pot. Bring to a boil, then reduce to a lively simmer, cover, and cook 30–35 minutes until chicken is tender and nearly falling from the bone. If using fish, simmer the base alone for 20 minutes to develop flavor; you will add the fish in Step 6.
Step 5: Cook the peanut slurry
In a separate saucepan, whisk peanut butter with warm water until smooth. Set over medium heat and bring to a gentle simmer. Cook 12–15 minutes, stirring constantly, until glossy, slightly thickened, and the raw peanut smell mellows. This prevents separation and gives the soup its velvety body.
Step 6: Combine and finish the soup
Pour the hot peanut slurry into the tomato broth, stirring well. Simmer 10 minutes uncovered; adjust with stock or water for a pourable, creamy consistency. Taste and season with salt as needed. If using fish, gently nestle it into the simmering soup now and cook 8–10 minutes, just until opaque and flaky. Keep heat moderate to prevent curdling or scorching.
Step 7: Make omo tuo (soft rice balls) and serve
In a medium pot, combine rinsed rice, 5 cups water, and 1/2 tsp salt. Bring to a boil, then cover and cook on low 25–30 minutes, stirring twice, until very soft and slightly porridgy; add a splash more water if needed. Off heat, use a sturdy spoon or whisk to beat the rice 1–2 minutes until creamy and cohesive. Wet your hands and shape into 6–8 smooth balls. Serve the hot soup in bowls with one or two rice balls, sprinkling with chopped peanuts, scallions, and chile rings.
Pro Tips
- Cook the peanut slurry separately first; it deepens flavor and helps prevent splitting when added to the soup.
- Bone-in chicken adds body and richness; skim excess fat from the surface if you prefer a lighter broth.
- Control heat by seeding the Scotch bonnet or using only half; add sliced fresh chile at the table for those who want more spice.
- For ultra-smooth broth, blend the tomato base with an immersion blender before adding the peanut slurry.
- Consistency is key: Ghanaian groundnut soup should be silky and pourable, not thick like stew; thin with hot stock as needed.
Variations
- Vegetarian/Vegan: Use vegetable stock and add sautéed mushrooms or roasted eggplant chunks; finish with a splash of coconut milk for extra silkiness.
- Smoky Note: Add 1–2 pieces of smoked fish or 1 tsp ground smoked paprika to mimic traditional smoky undertones.
- Spice Pantry Twist: Add a cracked grains of selim (hwentia) pod and/or a pinch of anise seed during the simmer for authentic aromatics.
Storage & Make-Ahead
Soup keeps 4 days in the refrigerator or up to 3 months frozen. Cool completely before storing. Reheat gently over medium-low heat, adding a splash of water or stock to loosen as needed and stirring frequently to avoid scorching. Omo tuo is best fresh but can be refrigerated up to 2 days; reheat with a drizzle of water in a covered pot over low heat, stirring until supple, then re-shape with wet hands. If freezing rice balls, wrap individually and thaw overnight before reheating.
Nutrition (per serving)
Approximate for 1/6 of recipe with chicken and one rice ball: 650 calories; 32 g fat; 55 g carbohydrates; 28 g protein; 6 g fiber; 800 mg sodium. Values will vary based on protein choice and exact ingredients.
