Sauté the vegetables: heat the olive oil in a large Dutch oven or heavy pot over medium-high heat. Add the onion and bell pepper and cook, stirring occasionally, until softened, about 5 minutes. Add the garlic and cook 30 seconds more until fragrant.
Brown the beef: add the ground beef to the pot. Break it up with a spoon and cook until browned all over, 6 to 8 minutes. Drain off any excess fat if needed. Do not rush this step — deeply browned beef adds rich, savory depth.
Bloom the spices: stir in the chili powder, cumin, smoked paprika, oregano, cayenne (if using), salt, and pepper. Cook for 1 minute, stirring constantly, until the spices smell toasty. This wakes up the spices and makes the whole pot taste bolder.
Add tomatoes and beans: stir in the fire-roasted tomatoes, tomato sauce, tomato paste, kidney beans, pinto beans, and beef broth. Scrape the bottom of the pot to release any browned bits — that is pure flavor.
Simmer: bring the chili to a gentle boil, then reduce the heat to low. Simmer uncovered, stirring occasionally, for 30 to 40 minutes, until thickened to your liking. The longer it simmers, the better it tastes.
Taste and adjust: taste and add more salt if needed, a pinch of sugar if the tomatoes are too acidic, or more cayenne for extra heat.
Serve: ladle into bowls, set out your favorite toppings, and serve with warm cornbread on the side.