In a large pot on medium heat, add the butter and allow it to melt. Add the diced onions and the chopped garlic and sauté until the onions are translucent and the garlic is fragrant.
Add the tomatoes (with the juice), the chicken broth, salt and pepper and fresh basil leaves. Stir until the tomatoes start to simmer.
Bring the mixture to a gentle boil and then reduce the heat to a simmer for 20 minutes.
Add the half and half and the parmensan cheese to the simmering soup and stir until combined.
Using an immersion blender or a traditional blender, remove the pot from the heat and puree the soup until smooth and creamy. (if you are using a traditional blender, you will need to blend in batches).
Continue simmering for another 5-10 minutes.
Ladle the Tomato Basil Soup into bowls and garnish with chopped fresh basil and shredded parmesan cheese. Serve hot with crusty garlic bread or a classic grilled cheese.