Heat canola oil over medium-high heat in a large, heavy-bottomed pot. Add onion, poblanos and garlic, and sauté 15 minutes, stirring frequently, until deep golden brown. Add guajillo chiles and spices, and sauté 1 minute, until fragrant.
Add beans, a generous hit of salt, broth and water, and bring to a boil. Reduce heat to low and simmer, uncovered, for 1-1/2 hours, until beans are very tender.
Using a potato masher, mash the beans until there’s a mix of whole beans and creamy mashed beans.