Place rice and water in a large saucepan and bring to the boil. Cover, and reduce heat to low. Simmer until rice is tender and water has absorbed, about 30 minutes.
Meanwhile, heat olive oil in a large saucepan over medium low heat. Add onion and fry until soft and golden, stirring frequently. Add garlic and ginger and cook until fragrant, about 5 minutes. Stir in tomatoes and season with cayenne pepper. Increase heat to medium and bring to a gentle simmer. Stir in peanut butter until mixture thickens and heats through. Serve over rice.