Heat the oil in a large, deep pan and cook the onion for 5 minutes, until softened, before adding the ginger, garlic and chilli and cooking for a further 2 minutes. Stir in the curry powder and tamarind and cook for another 2 minutes then add the tomatoes, coconut milk and stock.
Bring to a boil then turn down to a simmer and add the fish. Cook for 5 minutes, adding in the peas and spinach for the last minute, to let wilt.
Meanwhile, put the rice into a large pan with 500ml cold water. Bring to the boil, then turn down to a simmer and cook for 10 minutes until tender. Remove from the heat and let sit for 2 minutes before fluffing with a fork and serving in bowls topped with the fish curry.