Sauté your aromatics. Heat 2 tablespoons of olive oil in a large pot over medium heat.
Add the diced onion and a pinch of salt. Cook, stirring often, until soft and lightly golden, about 6–8 minutes. Add the minced garlic and cook for 30 seconds, just until fragrant.
Build tomato flavor. Stir in tomato paste and cook for 1–2 minutes to caramelize it slightly.
This deepens the flavor and cuts raw acidity.
Add tomatoes and broth. Pour in the canned tomatoes with their juices. If using whole tomatoes, crush them gently with a spoon. Add 3 cups of broth to start.
Drop in a Parmesan rind if you have one.
Season and simmer. Add 1 teaspoon of salt, a few grinds of black pepper, and a pinch of red pepper flakes if desired. Bring to a gentle simmer and cook uncovered for 15–20 minutes, stirring occasionally. Taste and add 1–2 teaspoons of sugar if the tomatoes are very sharp.
Add basil and blend. Stir in the basil leaves during the last 2 minutes of simmering.
Remove the Parmesan rind. Blend the soup until smooth using an immersion blender, or carefully transfer to a blender in batches. Return to the pot.
Finish with cream. Stir in 1/2 cup of heavy cream.
If you want it richer, add up to 3/4 cup. Simmer on low for 2–3 minutes. Adjust thickness by adding more broth if needed.
Brighten and balance. Taste and adjust seasoning.
Add another pinch of salt or pepper. Stir in a teaspoon of balsamic vinegar for brightness if you like.
Serve. Ladle into bowls. Garnish with torn basil, a swirl of cream, a drizzle of olive oil, or freshly grated Parmesan.
Serve with grilled cheese, garlic bread, or a simple green salad.