In a 4-quart enamel cast-iron skillet, heat olive oil over medium heat.
Add the onion, finely chopped ginger, and minced garlic, and cook for 5–6 minutes or until the onions are soft.
Add the curry paste, stir, and cook for a minute until fragrant.
Add the drained tomatoes and break them up with a wooden spoon, then pour in the coconut milk.
Turn the heat to medium-high and bring to a slow boil.
Cook and stir regularly for about 4 minutes or until the sauce is slightly thickened.
Add the peeled and deveined shrimp and gently stir them into the sauce.
Add the baby spinach, gently fold it into the sauce, and remove the cast-iron skillet from the cooktop.
Top the curry mixture with the cooked rice and spread it out evenly. Drizzle 3 tablespoons of water over the rice to ensure the rice steams and stays moist.
Cover the skillet with the lid and bake for 35-40 minutes until the rice is cooked.
Remove from the oven, remove the cover, and gently fold the rice into the shrimp and sauce mixture.
Top with the sliced green onions and chopped cilantro and serve.