In a 5- to 6-quart (5- to 6-liter) pan, combine onions, garlic, oil, and 1/4 cup (60 ml) water. Cook over medium-high heat, stirring often, until onions are tinged with brown (about 10 minutes); add water, 1 tablespoon (15 ml) at a time, if pan appears dry. Add beans, broth, coriander seeds, oregano, allspice, red pepper flakes, and cardamom. Bring to a boil; then reduce heat, cover, and simmer until flavors are blended (about 10 minutes).
Meanwhile, finely shred enough peel (colored part only) from oranges to make 2 teaspoons. Squeeze juice from enough oranges to make 1/2 cup (120 ml). Set shredded peel and juice aside. Cut peel and all white membrane from remaining oranges; thinly slice fruit crosswise. Cover sliced oranges and set aside.
Uncover chili; bring to a boil over medium heat. Then boil, stirring occasionally, until thickened (15 go 20 minutes; as chili thickens, reduce heat and stir more often). Stir 1 teaspoon of the orange peel and the 1/2 cup (120 ml) orange juice into chili. Ladle chili into bowls; top with orange slices and sour cream. Garnish with remaining 1 teaspoon orange peel. Season to taste with salt.