In a 12-inch saute pan, heat the olive oil over a medium-high flame until hot but not smoking. Add the onion and garlic and saute for a few minutes, until onion is translucent. Add a pinch of salt. Add the chopped tomatoes and their juices and bring to a boil. Reduce to a simmer and let cook until the tomatoes begin to soften and break down, about 5 minutes.
Place the bread slices in a bowl and cover with 2 cups water. Tear the bread into rough pieces and add to tomato mixture. Add the remaining water from the bowl. Continue simmering until all the bread has absorbed as much liquid as possible, yielding a baby food-like consistency.
Stir in the basil. Season, to taste, with pepper. Add extra-virgin olive oil, if desired. Let the soup continue simmering for 10 more minutes, then serve immediately in warmed soup bowls. Garnish, to taste, with Parmigiano-Reggiano.