Milky fish soup — the kind served at hawker centres from a battered pot with a practiced ladle — is one of the most beloved bowls in Singapore. The white, opaque broth comes not from long simmering but from evaporated milk added near the end of cooking, which gives the soup its characteristic richness and the colour that distinguishes it from clear fish soups. Batang, or Spanish mackerel, is the hawker default: its firm, oily flesh stands up to the intense broth without falling apart, and the fat content from the fish emulsifies into the milk to create something that is more than the sum of its parts.
This is an adult and older-child dish. Batang carries more mercury than threadfin or pomfret and should not be a daily food for young children; a bowl once a week for children over three is perfectly appropriate. For the adults at the table, this is one of the most flavourful and nutritious ways to eat fish — batang is exceptionally rich in omega-3, protein, and B12, and the evaporated milk contributes calcium.
Ingredients (serves 3 to 4)
- 400g batang (Spanish mackerel), cut into 1.5cm slices
- 1 litre fish broth
- 180ml evaporated milk
- 2 medium tomatoes, cut into wedges
- 50g kiam chye (salted preserved mustard greens), rinsed and thinly sliced
- 4 slices fresh ginger
- 2 cloves garlic, lightly crushed
- 1 tablespoon neutral oil
- 1 teaspoon light soy sauce
- White pepper, to taste
- Spring onion and fried shallots, to serve
- Cooked bee hoon (rice vermicelli) or white rice, to serve
Method
- Heat the oil in a medium pot over medium heat. Add the ginger slices and garlic and fry for about 90 seconds until fragrant and beginning to colour.
- Add the kiam chye and fry for 1 minute to develop the flavour.
- Pour in the fish broth and bring to a boil. Add the tomato wedges. Simmer for 5 minutes.
- Add the batang slices. Cook for 3 to 4 minutes until the fish is just cooked through — the flesh should be opaque and firm. Do not overcook; batang becomes dry quickly.
- Reduce the heat to low. Pour in the evaporated milk and stir gently. Let the soup warm through for 1 minute without boiling (boiling the milk will cause it to separate).
- Season with soy sauce and white pepper. Taste and adjust — the kiam chye contributes salt, so add soy carefully.
- Serve over bee hoon or with steamed rice, topped with spring onion and fried shallots.
Serving and Storage Notes
This soup is best eaten fresh. The milk-based broth does not reheat gracefully — it tends to separate and the fish will overcook on the second heat. If you are planning for leftovers, reserve some broth before adding the milk and fish, and add fresh fish and milk when reheating the next day.
For younger children between 12 and 36 months at the family table, serve a portion from the broth before the kiam chye and soy are added, using plain fish broth as the base. The fish can be flaked into congee separately with a small amount of the unsalted broth. The full adult version is well-suited to children from around 3 years, served with steamed rice rather than bee hoon for younger diners.
