Cook the base vegetables. In a large pot, heat the olive oil over medium heat. Add the onion, carrots, and celery, and cook until softened, stirring occasionally, about 10 minutes.
Add the Garlic and Greens. Add the minced garlic and cook for another minute until fragrant. Stir in the shredded cabbage, chopped kale, and zucchini. Cook for about 5 minutes, stirring occasionally, until the greens wilt.
Combine the Ingredients. Add the cannellini beans, vegetable broth, crushed tomatoes, bay leaf, thyme, and red pepper flakes (if using). Stir well to combine all the ingredients. Bring the mixture to a boil, then reduce the heat and let it simmer for 30 minutes.
Season and add bread. Season the soup with salt and pepper to taste. Add the torn stale bread pieces, stirring well. Simmer the soup for another 10 minutes, stirring occasionally. The bread will absorb the liquid and thicken the soup into a hearty consistency.
Finish and serve. Remove the bay leaf and thyme sprig before serving. Ladle the soup into bowls, drizzle with extra virgin olive oil, and top with freshly grated Parmesan cheese or pecorino Toscano. Enjoy the rustic and comforting flavors of Tuscan Italian Bean Soup!