Heat the oven to 450° Fahrenheit.
For larger tomatoes, core and cut them into halves, or if they are large, cut them into quarters.
Spread the tomatoes, onion, and garlic cloves onto a baking sheet (see notes for pan suggestions). Pour over the olive oil, and then season with 1/2 teaspoon salt and 1/2 teaspoon fresh ground black pepper. Toss well.
Roast the tomatoes until they soften, burst, and release some of their juices, 20 to 30 minutes. Some tomatoes will be caramelized and brown in spots.
Transfer the roasted tomatoes, onion, garlic cloves, and all the pan juices to a large soup pot or Dutch oven. Place the pot over medium-high heat.
Stir in the broth, butter, and a pinch of red pepper flakes (if using), and then bring to a simmer. Reduce to a low simmer, and cook until the liquid has reduced by one-third, about 30 minutes.
Turn off the heat, add the basil leaves, and then blend the soup until smooth. An immersion blender is the easiest, or you can use a blender. If you use a regular blender, it is best to blend in batches and not fill the blender as much as you usually would since the soup is so hot. We like to remove the center insert of the lid and cover it with a kitchen towel while blending — this helps to release some of the steam and prevents the blender lid from popping off (which can be a big, hot mess).
Taste the soup, and then add salt and pepper until the flavor pops — it should make you smile. Finally, stir in the cream and serve.