Heat olive oil in a large, heavy pot over medium heat. Add onions and cook until soft and slightly translucent. Add garlic, carrots, celery, peppers, and chili peppers and cook until begin to soften, about 5 minutes.
Increase the heat to medium-high and add ground beef. Break it up with your spoon so there are no big lumps, and cook until no longer pink and well-browned on all sides, about 5 minutes, stirring occasionally. Stir in cumin, paprika, and cinnamon.
Add canned tomatoes (with juices), balsamic vinegar, beans, and coriander, and season with salt and pepper. Cover with a lid and lower the heat. Cook at a steady simmer, stirring occasionally, until meat is tender and juices have darkened and thickened. The longer you cook – the better. I usually cook mine for 1 hour. If at any point during cooking the mixture appears dry, add a few tablespoons of water. The result should be thick, moist, and juicy.
Serve with rice and sour cream.
Chili will keep in the fridge for up to 5 days.