Preheat the oven to 375 degrees F. Line a sheet pan with parchment paper.
In a blender or food processor, puree the tomatoes until smooth. Set aside. Alternatively, you can begin with canned diced tomatoes and skip this step, but the whole taste better!
In a large stockpot or Dutch oven, heat 2 tablespoons of olive oil over a medium flame. Add the onions, carrot and fennel. Sauté, stirring occasionally, until the vegetables are soft and beginning to brown, about 8 minutes. Stir in the garlic, salt, red pepper flakes and 2 ½ cups of the bread. Cook for two minutes more, until fragrant.
Carefully pour in the tomatoes and vegetable broth. Bring to boil over high heat, then reduce to medium-low and simmer until the soup has thickened slightly and the bread is completely soft, about 40 minutes.
Meanwhile, make the topping: toss the remaining bread with 2 tablespoons olive oil on the prepared sheet pan. Arrange in an even layer and toast in the oven until golden brown, about 20 minutes. Remove, season with salt, and set aside.
To serve, ladle the soup into bowls and divide the croutons between them. Garnish with basil and cheese, if using, and a generous drizzle of olive oil.