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, broth or water, and salt. Bring the mixture to a boil. Cover, reduce the heat to low, and simmer for 30 minutes.
If you like, use an immersion blender to blend the soup partially. I like it to be mostly smooth with some juicy bits of tomato throughout. If you prefer a heartier, chunkier soup, skip this step.
Add the bread to the soup. Bring the soup back to a simmer, and simmer, uncovered, for 5-10 more minutes, or until it's thickened. 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 and thicken up as it's stored.
Transfer the soup to bowls. Top each portion generously with cashew parmesan cheese on top and an extra drizzle of olive oil. Enjoy.
Leftover soup will keep for up to 5 days in an airtight container in the fridge and can be frozen for up to 8 weeks.