Place beans in a colander and rinse under cold water. Pick out any rocks or beans that are broken or shriveled. Transfer beans to a large bowl and cover with water, 2” above the top of the beans. Soak for 8-12 hours.
The next day or after soaking, drain and rinse beans.
If adding onion, bell pepper, carrot, celery, and/or garlic, heat a Dutch oven or 4-quart pot or saucepan over medium heat. Add oil. Once oil is simmering, add aromatic vegetables and sauté until translucent, ~5 minutes. Add the optional garlic and/or spices and sauté for 30 seconds, stirring frequently.
Add the beans, bay leaf, salt, and optional tomatoes, chilis, chipotle peppers, and/or hearty herbs. Add enough water or broth to cover beans by ~2 inches. Bring beans to a boil, then reduce to a simmer and partially cover.
Simmer for 45-90 minutes, or until beans are tender. While the beans cook, add more water if needed to ensure the beans remain submerged. Once cooked, add acid and any additional salt to taste. Sprinkle with optional fresh herbs. Enjoy!