Preheat the oven to 400°F (204°C). Line a baking sheet with aluminum foil or parchment paper. Set aside.
Wash tomatoes properly and slice in half or cut in quarters, depending on the size of tomatoes. Smaller tomatoes may be left whole.
Place the tomatoes and garlic cloves in a single layer on the prepared baking sheet.
Generously season with salt and pepper then drizzle with olive oil.
Roast tomatoes for about 40-50 minutes or until the skin softens and slightly charred on the top of the bottom part. Tomatoes will start to burst and ooze out the liquid. Remove from the oven and set aside.
Heat up a medium saucepan or dutch oven over medium heat. Add about 2 tablespoons butter or oil and heat over medium-high heat. Once it immediately it heats up, add onions and bell pepper. Saute while stirring frequently for about 8 to 10 minutes until the onions are translucent and slightly caramelized.
Add roasted tomatoes, garlic, fresh basil, broth, Italian seasoning, sugar, and red pepper flakes to the saucepan. Reduce heat to low, and cook. Simmer the soup uncovered for about 20 minutes.
Using an immersion blender or handheld blender, carefully blend your homemade tomato basil soup in batches on high-speed. Resist the temptation of over-blending. It might cause the soup to be too watery.
Return soup to your dutch pan, add in the cream if using any, and season with additional salt and pepper to taste. Allow to simmer for about 10 minutes. Garnish with fresh basil, crunchy croutons, if desired.