In a large pot, heat the olive oil over medium heat. Add the diced onion and sauté for about 5 minutes until translucent. Stir in the minced garlic and grated ginger, cooking for an additional minute until fragrant.
Add the diced red bell pepper to the pot and cook for another 3-4 minutes until softened.
Pour in the coconut milk and fish stock (or vegetable broth), stirring to combine. Add the fish sauce, lime juice, and lime zest. Bring the mixture to a gentle simmer.
Once simmering, add the fish pieces and cherry tomatoes. Cook for about 5-7 minutes, or until the fish is cooked through and flakes easily with a fork.
Stir in the fresh spinach and cook for an additional 2 minutes until wilted. Season with salt and pepper to taste.
Serve the soup hot, garnished with fresh cilantro and lime wedges on the side.