Drain soaked beans and transfer them to a stock pot. Add garlic, epazote, and cold water. Place pot over high heat and bring to a boil. Stir. Reduce heat to low. Simmer uncovered until beans are soft, 1 1/2 to 2 hours. Drain the beans and reserve all the liquid.
Melt lard in a large skillet over medium-high heat. Add onions and salt; cook until onions start to brown, 10 to 12 minutes. Stir in serrano pepper and chipotle powder; cook 1 minute. Transfer drained beans into skillet. Mash about half the beans with a potato masher or back of a spoon. Ladle some bean cooking liquid to skillet. Continue to mash and stir beans as you gradually add more liquid. Mash until the beans have reached your preferred consistency and texture. Taste and add more salt, if desired.