Finely chop the onion and roughly grate the carrots. Heat a saucepan with oil and saute the onion for a few minutes.
Add carrot, tomato puree, stock, and water. Bring to a boil and simmer for 10 minutes.
Cut the fish into chunks and add to the saucepan. Cover with a lid and simmer for an additional 6-8 minutes or until the fish is cooked through.
Carefully stir in the cream, chili paste, and coriander (saving some for the garnish), and shrimp together with the cherry tomatoes (halved) and bring to a boil. Remove from heat.
Meanwhile, add the mayonnaise to a small bowl and mix in lemon juice, zest, garlic, and salt. Adjust seasonings to taste.
Ladle soup into bowls and add a dollop of lemon mayo to each, topping with fresh coriander if you have some. Serve with crusty bread and a salad.