In a large heavy bottomed pot heat enough olive oil to coat the bottom of the pan, over medium-high heat. Add the onions and cook, stirring often until soft and golden but not browning.
Add the garlic and cook, stirring often until fragrant and also softened about 3 minutes reducing the heat if necessary. Season with a pinch of salt.
Reduce heat to medium and add the cayenne, cumin, coriander and chili powder stirring continuously with the onions and garlic until fragrant just about 30 seconds. Don't let the spices burn, you just want to get them a little toasty.
Add the tomato puree and stir together. Cover and bring to a high simmer.
Meanwhile char the jalapenos over an open flame or in the broiler until the skin starts to blister and char but the pepper still retains its structure and turns bright green. Remove from heat using tongs and chop fine. Add into the simmering chili sauce and stir together. Add the cocoa powder as well.
Add all the beans to the pot and cook until tender and sauce is thick, stirring occasionally over very low heat with the top on. This should take about 1-2 hours if you used canned beans, and longer if you decided to soak your beans overnight. Add water if necessary, or if chili is looking too soupy let it cook for a bit with the top off.
When chili is thick and good and the beans are tender but not all mushed together season with salt if necessary and serve with Fritos, green onions, chopped red onions and cheese or sour cream if you want.