Heat a large pot over medium, then add the bacon. Cook, stirring occasionally, until the bacon begins to render. Add a splash of water to help extract the fat and continue cooking until the bacon is lightly crisped.
Add the longaniza and stir until well coated (or if using chorizo, cook until browned and fragrant). Stir in the onion and a pinch of salt, and cook until the onions are translucent. Next, add the serranos or jalapeños and cook until softened. Add the tomatoes and cook until they begin to break down.
Add the beans and slowly incorporate them into the mixture. Pour in the stock or bean broth and stir to combine. Add more water or stock as needed until brothy. Season with salt to taste.
Stir in the cilantro and bring to a simmer. Reduce the heat to low and cook for 1 hour, stirring occasionally, until the flavors meld together.
Give the beans a good stir before serving. Top with queso fresco, cilantro, and salsa, if desired.
