Heat oven to 350°.
Cut tomatoes and shallots into wedges and onions into slices. Push most of the seedy parts of the tomatoes out before you roast.
Spread the tomatoes, onions and shallots on a rimmed baking sheet, drizzle with olive oil and season with salt and pepper. Tuck the garlic cloves into the tomatoes so they don’t char. Roast in the oven for 30 to 40 minutes until the tomatoes have broken down. Remove to cool slightly.
In a saucepan, combine broth with everything from the roasting pan and the parsley, bring to a gentle boil and allow to simmer for 5 to 10 minutes.
(At this point, I like to add a large pinch of red pepper flakes or a little anchovy paste, depending on my mood.)
Use an immersion blender or regular blender to puree the soup to your preferred smoothness.
Return the soup back to the pot, reheat and season with salt and pepper to taste.
Serve with a slice of mozzarella on top and garnish with basil.