This Chinese rice fish saffron recipe is a layered rice dish with flaky fish, mushrooms, sweetcorn and mung bean sprouts. Soy sauce and tomato add savoury depth, while saffron gives the finished rice its aroma and golden colour.

Ingredients
- 3 cups long-grain or basmati rice
- 1 kg firm white fish fillets
- 300 g mushrooms, sliced
- 1 cup mung bean sprouts
- 1 can sweetcorn, drained
- 1 teaspoon garlic powder
- 2 tablespoons tomato paste
- 2 tablespoons soy sauce
- 1 large onion, thinly sliced
- 4 tablespoons hot saffron infusion, plus a little extra for the top if desired
- 100 g butter, divided
- 2 tablespoons neutral cooking oil
- Salt and black pepper, to taste
Choose a fish that stays in flakes after cooking, such as cod, haddock or hake. If the fillets are frozen, thaw and dry them before weighing. Soy sauce is already salty, so season the filling only after tasting it.
Prepare the fish
Place the fish in a wide pan and add enough lightly salted water to come about halfway up the fillets. Cover and simmer gently until the centre is opaque and separates easily into large flakes. Lift the fish out and reserve 1/4 cup of the cooking liquid. Let the fillets cool just enough to handle, then remove any skin and bones.
Keep the pieces fairly large. They will be folded into the sauce and steamed with the rice, so finely shredded fish can become dry.
Parboil the rice
Rinse the rice until the water runs mostly clear, then soak it in salted water for 30 minutes if time allows. Bring a large pot of water to a rolling boil, add the drained rice and cook until the outside of each grain is tender but the centre still has a little bite. Drain at once.
Prepare the saffron before layering the pot. If you need a dependable method, see our guide to brewing saffron.
Make the mushroom and fish filling
Heat the oil with 25 g of the butter in a large frying pan. Add the sliced onion and cook over medium heat until soft and lightly golden. Stir in the tomato paste and cook for a minute so it loses its raw edge.
Add the mushrooms and a small pinch of pepper. Cook over medium-high heat until their released moisture has mostly evaporated. Stir in the garlic powder, soy sauce, 2 tablespoons of saffron infusion and the reserved fish liquid.
Fold in the fish, mung bean sprouts and drained corn. Turn the mixture gently so the fish remains in visible flakes, then take the pan off the heat. Taste and add salt only if it needs it.
Layer and steam the rice
Melt half of the remaining butter in a clean, heavy-based pot. Add a layer of rice, followed by a loose layer of the fish mixture. Continue alternating the two, finishing with rice. Do not press the layers down; leaving them loose helps steam travel through the pot.
Drizzle the remaining saffron infusion over the top and dot with the last of the butter. Wrap the lid in a clean tea towel, cover the pot and cook over medium heat for 5 minutes, just until steam gathers. Reduce the heat to its lowest setting and steam for 35 to 40 minutes.
How to serve it
Rest the covered pot off the heat for 5 minutes. Lift the rice and filling together with a wide spoon, moving gently so the grains and fish stay intact. A crisp cucumber salad or simply dressed greens make a fresh contrast to the buttery rice.
The fish should be fully cooked before serving. The current US food-safety benchmark for fish is an internal temperature of 63°C (145°F), or flesh that is opaque and separates readily with a fork. See the official safe-temperature chart for the complete guidance.
Small changes that work
- For a lighter finish: use 60 g butter and add a tablespoon of oil to the pot before layering.
- For more colour: reserve a spoonful of saffron rice from the top and scatter it over the platter.
- For softer sprouts: add them with the mushrooms. For more crunch, fold them in just before layering.
- For leftovers: cool promptly, refrigerate in a shallow container and reheat only the portion you need until steaming hot.
This dish contains fish, soy and dairy when made as written. Check the soy-sauce label if you also need the meal to be gluten-free.




