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 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.
Using a wooden spoon, add the stale bread chunks and water. Continue simmering until all the bread has absorbed as much liquid as possible, yielding a baby food-like consistency. Add the garlic and stir in the basil. Season, to taste, with pepper. Let the soup continue simmering for 10 more minutes, then serve immediately in warmed soup bowls. Garnish, to taste, with Parmigiano-Reggiano.