Heat olive oil in a large pot over medium heat. Add onion, carrots, and celery, and cook until softened, about 5 minutes.
Add garlic and cook for another minute until fragrant.
Stir in cannellini beans, diced tomatoes, vegetable broth, kale, rosemary, and bay leaf. Season with salt and pepper.
Simmer the soup for 20-30 minutes until the flavors meld together.
Place a slice of day-old bread in each bowl and ladle the soup over the top. Sprinkle with grated Parmesan cheese before serving.
Notes
Wine Pairing: Pair this hearty Ribollita with a bold Chianti Classico. The acidity of the Sangiovese grape complements the richness of the soup perfectly.