Don Signature Crab - Singapore Food Guide

Fish Soup with Evaporated Milk

A comforting Singapore-style fish soup made with a clear, ginger-scented broth enriched with evaporated milk for a silky, hawker-centre favourite at home.

About this dish

Fish Soup with Evaporated Milk is a weekday and supper favourite across Singapore — imagine a steaming bowl that you might slurp at a neighbourhood kopitiam or order from a zi char stall after a late-night shift. The base is a light, aromatic fish stock brightened with ginger, white pepper and a splash of evaporated milk to give that creamy mouthfeel without overwhelming the clean fish flavours. It’s simple, restorative and beloved by families from HDB heartlands to Tiong Bahru flats.

At home this dish is ideal for busy parents and weeknight dinners: it’s quick to pull together if you use ready-made fish stock or leftover fish bones, yet it still feels like comfort food when served family-style with steaming rice or bee hoon. In Singapore, many hawkers add tofu puffs, chunks of tomato, slices of fish and crunchy lettuce — small local twists you can copy easily. Season bright and peppery like the hawker versions, but mild enough for children by reducing the white pepper or chilli.

The flavour profile is gentle and savoury, with the freshness of white fish (dory, seabass or local ikan merah if available), a warm ginger undernote and the soft creaminess from evaporated milk. Texture contrasts — silky broth, tender fish flakes, pillowy tofu and crisp greens — make each spoonful satisfying. Serve with sambal on the side for those who like a chilli kick, or pair with a cup of kopi or barley water for a proper Singaporean makan experience.

Ingredients

  • 600 g firm white fish fillets (dory, cod or seabass), cut into 4 cm pieces
  • 1 L fish stock (homemade from fish bones or good-quality store-bought)
  • 200 ml evaporated milk
  • 1 thumb-sized (about 20 g) ginger, peeled and julienned
  • 3 cloves garlic, lightly smashed
  • 1 small onion, halved
  • 150 g tofu puffs or soft tofu, halved if large
  • 1 small head lettuce or 200 g baby bok choy, leaves separated and washed
  • 1 medium tomato, cut into wedges
  • 1 tsp white pepper, plus extra to taste
  • 1 tsp sea salt, or to taste
  • 1 tsp fish sauce (optional, for umami)
  • 2 tbsp vegetable oil
  • 2 spring onions, chopped
  • Fresh coriander leaves and sliced red chilli or chilli padi to garnish (optional)

Step-by-Step Method

  1. 1. Prepare the stock: In a large pot, bring 1 L fish stock to a gentle simmer. If using fish bones, simmer for 25–30 minutes with half the ginger and onion to extract flavour, then strain.
  2. 2. Sweat aromatics: In a wok or small saucepan, heat 2 tbsp vegetable oil over medium heat. Add the remaining sliced ginger and smashed garlic, fry briefly until fragrant but not browned (about 30–45 seconds).
  3. 3. Build the broth: Add the strained or store-bought fish stock back to the pot and bring to a gentle boil. Add the tomato wedges and tofu puffs, simmer 3–4 minutes to soften and release sweetness.
  4. 4. Poach the fish: Reduce heat to a gentle simmer (low-medium). Season the broth with 1 tsp sea salt, 1 tsp white pepper and 1 tsp fish sauce if using. Slide in the fish pieces; cook gently for 3–5 minutes until just opaque and tender. Avoid vigorous boiling to keep fish from falling apart.
  5. 5. Finish with evaporated milk: Lower heat to a gentle warm (no rolling boil). Stir in 200 ml evaporated milk slowly and heat through for 1–2 minutes. Taste and adjust seasoning with more salt or white pepper; do not boil after adding milk to prevent curdling.
  6. 6. Add greens and garnish: Blanch the lettuce or bok choy separately for 30–45 seconds, then add to bowls. Ladle soup and fish over the greens. Top with chopped spring onions, coriander and sliced chilli to serve.
  7. 7. Serve immediately: Offer sambal or extra white pepper at the table so each person can season to taste — a common practice at kopitiam and hawker stalls. Serve with steamed white rice or bee hoon for a heartier meal.
  8. 8. Leftovers and reheat: Reheat gently over low heat; if the broth separates slightly after refrigeration, whisk in a splash of hot stock and reheat slowly.

Tips & Serving Ideas

  • If you don’t have fish stock, simmer fish heads and bones with a slice of ginger and half an onion for 20–25 minutes for an excellent quick stock — common home practice in Singapore.
  • Buy fish at your local wet market or NTUC FairPrice; dory is convenient and boneless, but local seabass or merah give better flavour if you can debone them.
  • Avoid boiling after adding evaporated milk; keep heat low so the milk won’t separate. Stir gently and warm through only.
  • Adjust white pepper to taste — hawker stalls often serve fish soup quite peppery. For kids, reduce white pepper and skip chilli padi.
  • To make it richer, substitute half the evaporated milk with full-fat coconut milk for a Peranakan-inspired twist, but expect a different flavour profile.
  • Make-ahead tip: prepare the stock and refrigerate for up to 2 days. Add fish only when ready to serve so it stays tender. Leftovers reheat gently and are great for next-day lunch with rice.

You might also like

More recipes to save for later.