Wash the beans well and soak them overnight in cool water, covering the beans by 2–3 inches. The next day, drain and rinse the beans well.
In a large stockpot, cover the beans with cold water by 2 inches. Bring to a boil, then cover and reduce heat to medium low and simmer uncovered until beans are tender, about 1 to 1½ hours, being careful not to overcook. Stir occasionally while cooking. Once cooked, drain and rinse well and return to the original pot.
Once the beans are done, heat the olive oil in a large 4-quart heavy saucepan over medium heat. Add the onions with ¼ teaspoon of salt and sauté. Once the onions start to turn translucent, about 3 minutes, add the bell peppers, jalapeños, and garlic. Sauté until slightly soft, about 3 more minutes.
Then add chili powder, cumin, and diced tomatoes and stir. Then add the beans and broth and bring to a simmer. Cover, reduce the heat to medium-low and simmer until the chili is thick, about 1 hour.
Serve hot garnished with sour cream and cilantro.