Heat the olive oil in a large pot over medium heat. Add the onion, carrots, celery, and sauté until the vegetables are softened, about 5 minutes.
If using, stir in the garlic, salt, black pepper, and red pepper flakes, and cook for another 2 minutes.
Pour the diced tomatoes and their juice, and bring the mixture to a simmer.
Add the diced potato and cannellini beans to the pot, stirring to combine.
Pour in the vegetable broth and bring the soup to a boil. Once boiling, reduce the heat to low and simmer for 20 minutes or until the potatoes are tender.
Add the kale and pieces of stale bread to the pot, pressing them down into the soup. Simmer for another 10 minutes or until the kale is wilted and the bread is softened.
Add the rosemary sprig and let the soup simmer for 5 minutes. Remove the rosemary sprig before serving.
To serve, ladle the Ribollita into bowls, drizzle with extra-virgin olive oil, and sprinkle with grated Parmesan cheese.