In a large bowl, cover the beans with cold water by 1-inch and cover with plastic wrap. Allow to soak overnight in the refrigerator.
Drain the beans and place them in a large pot with 8 cups of water, and bring to a boil. Lower the heat and simmer uncovered for 45 minutes. Add 1 teaspoon of salt and continue to simmer for about 15 minutes, until the beans are tender. Set the beans aside to cool in their liquid.
Meanwhile, heat the oil in a large stockpot. Add the pancetta and onions and cook over medium-low heat for 7 to 10 minutes, until the onions are translucent. Add the carrots, celery, garlic, 1 tablespoon of salt, the pepper, and red pepper flakes. Cook over medium-low heat for 7 to 10 minutes, until the vegetables are tender. Add the tomatoes with their puree, the cabbage, if using, the kale, and basil and cook over medium-low heat, stirring occasionally, for another 7 to 10 minutes.
Drain the beans, reserving their cooking liquid. In the bowl of a food processor fitted with a steel blade, puree half of the beans with a little of their liquid. Add to the stockpot, along with the remaining whole beans. Pour the bean cooking liquid into a large measuring cup and add enough chicken stock to make 8 cups. Add to the soup and bring to a boil. Reduce the heat and simmer over low heat for 20 minutes.
Add the bread to the soup and simmer for 10 more minutes. Taste for seasoning and serve hot in large bowls sprinkled with Parmesan and drizzled with olive oil.