This simple soup, which we came to think of as the hot-and-sour soup of Mexico, was cooked for us by Chabela Cortés García in Hidalgo. The sourness comes from xoconostle--sour prickly pears. They're tangy and succulent, sort of like small lemony melons. Sometimes you'll find them at farmers' markets, but the sweet prickly pears are far more common north of the border. (They look almost identical, so be sure to ask; the sour type have all their seeds in the middle, and seeds in the sweet ones are spread through the fruit.) You can use dried prickly pear instead, but it's not nearly as tangy, so add a bit of distilled white vinegar to make it taste closer to the fresh.
14 ounces (2 cups) franciscano, rio zape*, or ordinary small red beans
2 large garlic cloves, peeled and finely chopped
1/4 white onion, coarsely chopped
1 to 2 dried chipotle morita chiles, slit
9 ounces fresh ripe sour prickly pear fruit* (xoconostle; about 4 medium), peeled, seeded, and cut lengthwise into 1-in.-thick strips; or 1/4 oz. dried sour prickly pear* (about 1/4 cup) plus 1 tbsp. distilled white vinegar
Put beans in a 6- to 8-qt. pot and add enough water to cover by 2 inches. (The pot should be large enough to allow plenty of air space over the beans and water, so steam can circulate). Bring to a boil, covered, over high heat.
Boil beans, uncovered, 10 minutes. Reduce heat to a simmer, add garlic, onion, chiles, and fresh or dried xoconostle, and cook, lid barely ajar, until beans are tender (from 30 minutes to 2 hours, depending on the age of the beans; keep beans covered by about 2 inches of water during cooking, adding hot water when necessary). Add cilantro and salt and simmer 15 minutes more.
*Find thin-skinned rio zape or san franciscano beans at ranchogordo.com, along with dried sour prickly pear. Find the fresh prickly pears every now and then at farmers' markets specializing in Latino produce.