Remove the thick stalks of the cabbage by holding the stems with one hand and using the other hand to strip away the leaves. Discard the stalks and roughly shred the leaves.
Heat the oil in a saucepan over a low heat. Add the celery, onion and carrot and cook for 8–10 minutes until soft and translucent. Stir in the cabbage, potatoes, tomatoes, half the cannellini beans, the bay leaf and thyme, then pour in the stock, season with salt and pepper and bring to the boil. Reduce the heat and simmer, covered, for 30 minutes, until the vegetables are meltingly tender and the stock richly flavoured.
Use a potato masher or fork to mash the remaining beans, then add to the soup, stirring well. Add the bread and continue stirring while it soaks up the soup. The ribollita should be thick enough so that it can be eaten with a fork, but if it starts to look dry, add a little water. Serve with a generous drizzle of oil.