Heat the olive oil in a large saucepan over medium heat. Add the diced onion and sauté until the onion has softened and is starting to become translucent. Add the garlic, thyme, basil and bay leaf and sauté another 2-3 minutes. Add the flour and sauté, stirring for another 2-3 minutes.
Add the tomatoes and their juices, the water, optional parmesan rind, salt, and pepper and bring to a simmer. Cover, and simmer for 30 minutes, stirring occasionally.
Remove the parmesan rind and blend the soup using an immersion blender, food processor, or blender. If using a food processor or blender, blend in batches. Blend until the soup is fairly smooth, but still has a slight amount of tomato texture. Remove from the heat and stir in the balsamic vinegar. Serve piping hot.