Melt butter in a large pot over medium heat. Chop onion and add to pot, along with 1/2 teaspoon salt and 1/4 teaspoon pepper. Sauté until onions become translucent, stirring occasionally.
Sprinkle in the flour and cook for 1 minute, whisking continuously until thick and pasty. Add broth to flour mixture, whisking vigorously to break up lumps.
Coarsely chop basil leaves. Add to broth along with tomatoes (including liquid); stir to combine.
Mince garlic and add to soup. Bring to a boil then reduce to a simmer. Cover and cook for 20 minutes.
Remove from heat and allow to cool slightly. Add to blender and mix until smooth. (Have an immersion blender? You can use it here and blend up the soup right in the pot.)
Return soup to pot and add cheese and half and half; stir and reheat for 5-10 minutes until warm. Add remaining salt and pepper to taste.