Sweat the aromatics: Warm the olive oil over medium heat in a large pot.
Add the chopped onion with a pinch of salt and cook, stirring often, until soft and translucent, about 6–8 minutes. Add the garlic and cook 30–45 seconds until fragrant.
Build depth with tomato paste: Stir in the tomato paste and cook it for 1–2 minutes. Let it darken slightly; this step caramelizes the paste and builds that classic tomato depth.
Add tomatoes and broth: Pour in the canned tomatoes and their juices, then add the broth.
Break the tomatoes up with a spoon. Stir in the sugar, oregano, and red pepper flakes if using. Bring to a gentle simmer.
Simmer to meld flavors: Lower the heat and simmer uncovered for 20–25 minutes, stirring occasionally.
The soup should thicken slightly and smell sweet-savory, not sharp or tinny.
Blend until smooth: Use an immersion blender to puree the soup right in the pot until silky. If using a countertop blender, work in batches and vent the lid slightly to release steam. Blend until smooth and return to the pot.
Add the cream: Stir in 1/3 cup heavy cream.
Taste, then add more cream if you prefer a richer finish. Season with salt and black pepper. If using basil, tear a few leaves and stir them in at the end for a fresh note.
Adjust and serve: If the soup tastes too bright, add another pinch of sugar.
If it’s too thick, loosen with a splash of broth. Ladle into bowls and top with croutons, Parmesan, a swirl of cream, or a drizzle of olive oil.