Sauté Aromatics: Heat olive oil in a large Dutch oven or soup pot over medium heat. Add garlic, onion, carrots, and celery. Cook for 8-10 minutes, stirring occasionally, until softened.
Build Flavor: Stir in black pepper, red pepper flakes, and tomato paste. Cook for another 2 minutes.
Add Beans and Broth: Add cannellini beans, vegetable broth, bay leaf (optional), and parmesan rind. Bring to a gentle boil over medium-high heat.
Mash Beans: Using a potato masher, mash about half of the beans in the pot to thicken the soup.
Add Kale and Bread: Lower heat to medium. Stir in lacinato kale and chunks of day-old bread. Simmer for 10 minutes until the bread softens and absorbs the broth.
Season and Serve: Stir in white wine vinegar. Remove bay leaf and parmesan rind. Ladle soup into bowls and garnish with vegan parmesan. Drizzle with olive oil for extra richness.