Plan on first soaking the beans in 4 cups of water overnight.
Most directions say to drain and rinse them afterwards. I keep them covered with a kitchen towel and cook them with their soaking water and don’t experience digestive upsets. But whatever you choose to do, soak ‘em.
Put the beans in a large pot with water amounting to 6 cups. Add the bay leaf, 1/2 onion, garlic and olive oil. Cover and bake at 300° F (150° C). If cooking on the stovetop, bring to a gentle boil, then reduce the heat to a simmer. Place a heat-absorbent pad under the pot and cover. Either way, cook until the beans are tender – between 1 1/2 to 2 hours.
In a frying pan, heat the olive oil. Add the chopped onions and fry gently until translucent. Add the garlic and tomatoes. Cook over medium heat until the tomatoes have softened. Add all the spices and cook, stirring, for a few minutes, for flavors to blend.
Remove a ladle-full of beans from the pot with some of their liquid, and add to the frying pan. Mash the beans into the vegetables and cook together for 3 or 4 minutes, stirring a few times. Add more cooking liquid if the mass becomes dry.
Return the flavored beans to the pot. Add salt to taste. Cover and bake (or cook) another hour.
Check once in a while to make sure the beans aren’t drying out, and add a little water if needed. If well covered and kept from drying out, you can keep the beans cooking for much longer. Personally, I like to cook them 3 or 4 hours after they’re seasoned and ready; they just seem to get better and better.