Toast the bread. Preheat an oven to 375°F (190°C). Rip the bread into bite-size pieces about 1-2-inches big, then place on a rimmed baking sheet. Drizzle with 2 Tbsp of extra virgin olive oil, toss well, then toast for 7 minutes, or until the bread is crispy and lightly golden brown. Set aside.
Sauté the soffritto. Heat remaining 3 Tbsp extra virgin olive oil in a large Dutch oven or soup pot over medium-high heat. When hot, add diced onion, carrots, and celery, then season with 1 tsp Kosher salt. Cook, stirring occasionally, until the vegetables have softened slightly, about 6-8 minutes. Add 4 cloves chopped garlic, stir, then cook 1 minute more.
Add liquid. Add 1 (28oz) can of whole peeled tomatoes, either crushing them by hand directly over the pot or breaking up in the pot with a spatula. Add 4 cups of vegetable broth or water, then bring to a simmer.
Add aromatics. To the pot, add chopped kale leaves, rosemary bundle, 2 bay leaves, and a Parmesan rind, if using. Simmer for 15 minutes.
Meanwhile, mash half the beans. Place half of the beans in a bowl, then use a fork to mash well. Alternatively, for a smoother texture, you can purée these in a food processor.
Stir in remaining ingredients. Add mashed cannellini beans, remaining whole cannellini beans, 1 Tbsp red wine vinegar, and about half of the toasted bread, then stir well to thoroughly mix. Remove the bay leaves, herb bundle, and Parmesan rind. Taste and adjust seasoning as needed.
Garnish, then serve! Finish each bowl of soup with a generous drizzle of a high quality extra virgin olive oil, as much shaved Pecorino or Parmesan as you like, a pinch of flaky sea salt, and freshly cracked black pepper. Top with a few remaining bits of toasted bread, then enjoy immediately!