Rinse beans in a colander under cold water and inspect for any debris left over from sorting.
Add beans, bay leaves and quartered onion into a small, heavy-bottom stock pot or dutch oven and cover with cold water by three inches.
Bring beans to a boil and allow to boil for 15 minutes. After 15 minutes bring beans to a low simmer and cook until tender (approximately 1-2 hours if you pre-soaked or 2-3 hours for un-soaked beans). Make sure the beans stay submerged while cooking by adding more hot water to the pot if needed.
While the beans are simmering, add the diced bacon to a heavy-bottom sauce pan or dutch oven and sauté until it has rendered enough fat to add the diced onion.
Sauté the bacon/onion mixture until the onion is translucent, then add the garlic, salt, and chili powder.
When you can smell the garlic and chili powder release their fragrant oils, add the tomato paste, chipotles in adobo and 2 cups of water to make a savory aromatic broth. Bring to a low simmer and allow simmer for about 30 minutes while the beans cook. Remove from heat and reserve until the beans are done.
When the beans are completely tender, strain and reserve 1-2 cups of the cooking liquid.
Combine the beans with the savory aromatic broth and mix to incorporate. Add some of the bean liquid if needed and simmer for another 30 minutes to incorporate. Keep and eye on the beans and add more of the bean liquid if needed. You want more of a thick, stew-like consistency than a baked or refried-bean consistency.
Add the lime juice and the last tablespoon of sea salt, mix to incorporate. Taste to check for seasoning. Beans can take on a lot of salt, so if you don’t get a rich bean / chipotle flavor with hints of acid from the lime, add a few more pinches of salt until you do.
Garnish with the fresh cilantro and serve!
*Optional - Use 1/2 to 1 tablespoon of chipotles if you’d prefer your beans a bit less spicy. Add some more of the adobo liquid if you like the heat!