Did you know you can make tomato soup with just a can of tomato paste? I've been using this hack since I was a kid whenever we didn't have fresh tomatoes. It only takes 30 minutes and tastes exactly the same as regular tomato soup.
In a medium pot over medium heat, melt butter and add chopped onions and garlic. Cook for 5-6 minutes until soft and golden. The goal is to soften them but not turn them brown.
Add the tomato paste and cook for 2 minutes. The idea is that some of the tomato paste will caramelize and it will give the soup a more complex flavor.
Add chicken stock, water, sugar, and black pepper. Stir well and bring to a boil. Reduce the heat, partially cover with a lid, and simmer for 10 minutes.
At this point, you can keep the soup chunky or blend it to make it creamier. I recommend using an immersion blender in the pot, but you can use a food processor or blender. Make sure not to overfill the blender, and gradually increase the speed from low to high.
Add heavy cream (see notes for milk) and return to a simmer. Season to taste with salt. Enjoy!
Notes
Note on heavy cream/milk: If you use milk, make sure to temper it first, or else it will curdle when you add it to the hot soup. Pour the milk into a medium bowl and combine it with 1 cup of the hot soup. Mix well and then stir it back into the main pot of soup. The milk should not curdle this way. If the milk still curdles, you can blend the entire soup in a high-speed blender to re-emulsify everything.