In a large pot, melt butter over medium heat. Add the diced onion and sauté for 5-6 minutes until soft and translucent.
Add the minced garlic and cook for 1 minute until fragrant, stirring constantly to prevent burning.
Stir in the tomato paste, oregano, and red pepper flakes (if using). Cook for 2 minutes to deepen the flavors.
Add the canned tomatoes with their juices, vegetable broth, and sugar. Bring to a boil, then reduce heat and simmer for 15 minutes.
Remove from heat and add the fresh basil leaves. Use an immersion blender to puree the soup until smooth, or carefully transfer to a blender in batches.
Return the soup to low heat and stir in the heavy cream. Season with salt and pepper to taste. Heat through for 2-3 minutes without boiling, then serve warm with fresh basil garnish if desired.