Place the beans in a large bowl with enough water to cover them by 2-inches. Let soak overnight.
Fry the bacon until all of the fat has rendered and it has become crispy. About 10 minutes over medium heat. Transfer to a paper-towel lined plate and place in the refrigerator. Pour off all but 2 tbsp. of the bacon grease (reserve for another dish). Add the onion and cook until translucent. About 8 minutes. Add serrano, garlic, oregano, and cumin. Cook an additional minute.
Add in the chicken stock, scraping the bottom of the pot to remove any stuck-on bits. Add the beans. Bring to a gentle simmer and cook for about 1 1/2 hours, or until tender.
Add cilantro, tomatoes, and bacon. Taste for salt and add more, if necessary. Cook an additional 15 minutes.