In a large pot or Dutch oven, heat the oil over medium heat. Add the onion, celery, carrot, leek, garlic, salt, pepper, and red pepper flakes and cook, stirring, until the veggies are tender, 5 to 7 minutes.
Add the white wine and cook until reduced by about half, 2 more minutes.
Add the crushed tomatoes, the broth, thyme, oregano, bay leaves, and the cheese rind, if using. Bring the soup to a rapid simmer.
Once the soup is simmering, reduce to a light, steady simmer (about medium-low heat). Add the potatoes, cover and cook until the potatoes are just tender, about 15 minutes.
When the potatoes are tender, discard the bay leaves and cheese rind. Transfer 2 cups of the soup to a blender along with 1 cup of the cannellini beans. Blend until the mixture is very smooth and add back to the soup along with the remaining cannellini beans, kale, and chard.
Stir to combine and cook, uncovered and simmering, until the kale has just wilted and the beans are tender, about 10 more minutes, stirring occasionally. Taste the soup and add more salt and pepper, if desired.
To serve, tear or cut the bread into bite-sized pieces and place a handful of the bread pieces in the bottom of each soup bowl. Ladle the soup over the bread and top with a drizzle of extra virgin olive oil, a sprinkle of parmesan cheese (if using), and a few cracks of fresh ground black pepper.