Peel and dice carrots and slice onions. In a large, heavy saucepan, heat the olive oil over medium-high heat until shimmering. Add carrots and onion and cook until beginning to soften, 10 minutes, then add basil and cook until vegetables are completely soft, about 5 minutes more.
Add 3-28 oz cans of whole peeled Roma tomatoes and broth, bring to a boil, then reduce heat and simmer 20-30 minutes, or up to 45 minutes if time permits.
After allowing soup to cool somewhat, purée in a blender or food processor until smooth, doing so in batches if necessary. For a much silkier texture, strain the purée before returning to the pot.
Stir in half and half little by little over over low heat, until desired texture is reached and soup is just heated through. Season to taste with salt and pepper, and serve warm.