Soak beans in water overnight.
The next day, strain them and place in a large pot. Pour enough water into the pot to fill ¾ of the way.
Cut your onion in half. Place ½ the onion, cilantro sprigs, and 3 garlic cloves into the pot with the beans. Reserve the other half of the onion.
Bring water to a simmer and let beans cook until almost tender, approximately 1 ½ hours.
While the beans are cooking heat a large sauté pan to medium-high heat. Add chorizo and sauté until slightly browned, about 4 minutes. While the chorizo is cooking, dice the other half of the onion.
Remove chorizo from pan and set aside. Add ¼ cup of water, diced onion, and serrano peppers to the sauté pan. Sweat onion and chiles until tender and translucent about 4 – 5 minutes. Add tomato and let cook for 7-8 minutes more, or until the tomato has broken down and released all of its juices.
Add this mixture, and the chorizo to the pot of beans and let simmer for 20 more minutes or until beans are completely tender. Season to taste with salt and pepper.
Before serving, remove the half onion, cilantro sprig, and garlic cloves from the beans. Season with salt and pepper