Cover the beans with water and soak them overnight. Cook the beans with the bay leaves and 2 of the garlic cloves until they are soft, about 1 hour. Strain them, reserving 1 cup of the liquid to add to the soup.
In a food processor, shred the remaining 2 cloves of garlic with the celery, carrot, onion, and leek until very fine; still with tiny pieces of the vegetables, not a purée.
Sauté the vegetables in ¼ cup of olive oil on medium-low heat, about 10 minutes, or until it is fragrant and slightly colored.
Add the cooked beans and the 1 cup of cooking water, cabbage, chard, and water. Bring to a simmer and cook for approximately 1 hour. Season to taste with salt and pepper.
Crumble the stale bread into small chunks and place a handful of the bread in each bowl. Ladle the soup over it and let it sit for a few minutes for the bread to soften and the broth to be absorbed. Finish each bowl with olive oil and freshly ground black pepper.
