In a large pot, heat the olive oil over medium heat. Add the diced onion and sauté until translucent, about 5 minutes. 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). Stir in the fish sauce, lime juice, and lime zest. Bring the mixture to a gentle simmer.
Add the fish pieces and cherry tomatoes to the pot. 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 1-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.