Peel and dice the onion, carrot, and celery into small, even pieces. Mince the garlic, chop the basil, and measure out the broth and cream.
Melt the butter with the olive oil in a Dutch oven over medium heat. Add the onion, carrot, and celery and cook for 8 to 10 minutes, stirring often, until soft and translucent.
Add the garlic and stir for 30 seconds. Sprinkle in the flour and stir constantly for 1 to 2 minutes, then add the tomato paste and stir for another 1 to 2 minutes until it darkens to a deep brick red.
Pour in the sherry (if using) and scrape up any browned bits. Add the tomatoes with their juices, gently crushing them with your spoon. Stir in the broth, bay leaf, sugar, salt, pepper, and cayenne.
Bring the soup to a gentle boil, then reduce the heat to low. Cover partially and simmer for 20 minutes, stirring every 5 minutes, until the vegetables are very tender.
Remove the bay leaf and stir in the basil. Blend with an immersion blender for 1 to 2 minutes until completely smooth. For an extra silky finish, pass through a fine mesh strainer.
Return the pot to low heat and slowly pour in the heavy cream while stirring gently. Warm for 3 to 5 minutes, just until heated through. Do not let it boil.
Taste and adjust with more salt, pepper, or a pinch of sugar. Thin with warm broth if needed. Ladle into warm bowls and garnish with reserved basil leaves.