Remoja los frijoles en agua toda una noche.
Al día siguiente cuela los frijoles y ponlos en una olla grande. Cúbrelos con agua hasta llenar ¾ de la olla.
Corta la cebolla a la mitad. Agrega una mitad de la cebolla a la olla junto con el ajo y las ramas de cilantro. Reserva la otra mitad de la cebolla para usar después.
Hierve los frijoles suavemente hasta que estén casi tiernos, aproximadamente 1 hora y media.
Mientras los frijoles se cuecen calienta un sartén grande a temperatura media. Agrega el chorizo y saltéalo hasta que se dore un poquito, aproximadamente 4 minutos. Mientras el chorizo se cuece pica la otra mitad de la cebolla.
Retira el chorizo del sartén y reserva para usar después. Vierte el ¼ de taza de caldo de vegetales en el sartén y agrega la cebolla picada y el chile serrano. Suda la cebolla y el chile de 4 a 5 minutos o hasta que la cebolla esté tierna y traslúcida.
Agrega el tomate y deja cocer por de 7-8 minutos más, hasta que el tomate suelte su jugo.
Vierte toda esta mezcla y el chorizo en la olla de los frijoles. Deja hervir los frijoles suavemente por 20 minutos más o hasta que los frijoles estén completamente tiernos.
Sazona al gusto con sal y pimienta.
Antes de servir retira la mitad de la cebolla, las ramas de cilantro y el ajo de la olla.