In a large stockpot, bring the beans to a boil in 8 cups water. Let boil for 15 minutes and skim off any scum that rises to the surface. Drain beans in a colander and rinse. Wash out the pot and return the beans to the pot with 8 cups fresh water. Bring to a simmer, cover and let cook until tender, about 2 hours over low heat.
In a large saute pan, heat oil over medium-high heat until it begins to shimmer. Add onion and garlic and saute until the onion turns translucent. Add chili powder, salt, and pepper, and cook for a few minutes to allow flavors to integrate. Drain beans and add to pan, mashing the ingredients together. Heat through and serve with minced cilantro or minced parsley sprinkled on top.