Heat olive oil in a large saucepan over medium high heat. Add in the diced onion and saute for about 5 minutes until soft and translucent. Stir in garlic and cook 1 minute. Add in the chicken broth, diced tomatoes, salt, and pepper. Bring it to a boil and simmer for about 10 minutes.
Remove from heat. Add half of the fresh basil leaves, Use a handheld immersion blender to puree until smooth (or transfer to a blender to puree and return to the pot). Stir in the heavy cream, taste, and add more salt and pepper if necessary.
Divide into ceramic bowls and top with a slice of mozzarella. Place under the broil setting in the oven and broil until cheese is brown and bubbly, 2-3 minutes. Garnish with basil leaves and drizzle balsamic vinegar on top.