Heat the oil in a roomy pot over medium heat. Add the onions. Cook for 5 minutes, or until the onion is soft and clear. Add the garlic and cook, stirring frequently, for another minute.
Add the tomatoes, water, and salt. Bring the mixture to a boil. Cover, reduce the heat to low, and simmer for 30 minutes.
Transfer half of the soup (or more, if you'd like it to be totally pureed) to a blender and blend till smooth, or use an immersion blender to blend it up partially. I like it to be mostly smooth with some juicy bits of tomato throughout. Transfer the blended mixture back to the pot and bring it back to a simmer.
Add the bread to the soup. Warm everything through, then serve. If the bread absorbs more liquid than you like, add a little water and stir. The bread will continue to soak up all the goodness as leftovers sit (up to 5 days in an airtight container in the fridge).