Warm the pot: Set a large Dutch oven or heavy pot over medium-high heat.
Add 1–2 tablespoons oil.
Brown the beef: Add the ground beef in an even layer. Let it sear undisturbed for 2–3 minutes, then break it up. Cook until browned, 6–8 minutes.
Season lightly with salt and pepper. Spoon off excess fat if needed, leaving about 1 tablespoon for flavor.
Sauté aromatics: Add the onion and bell pepper. Cook, stirring, until softened, 4–5 minutes.
Add the garlic and cook 30 seconds, just until fragrant.
Bloom spices: Stir in chili powder, cumin, smoked paprika, oregano, and coriander. Cook 30–60 seconds to wake up the spices.
Tomato paste time: Add the tomato paste and cook 1–2 minutes, stirring, until it darkens slightly. This deepens the base.
Build the sauce: Pour in crushed tomatoes and 2 cups beef broth.
Stir well, scraping up any browned bits from the bottom.
Add beans and adjust heat: Stir in the kidney and pinto (or black) beans. If you like it looser, add more broth a little at a time.
Simmer low and slow: Bring to a gentle simmer. Reduce heat to low, partially cover, and cook 30–45 minutes, stirring now and then.
The chili should thicken and the flavors meld.
Balance and finish: Stir in brown sugar (or maple) and a splash of cider vinegar or lime juice. Taste and adjust salt, pepper, and heat with cayenne or hot sauce.
Serve with toppings: Ladle into bowls and finish with cheese, sour cream, green onions, cilantro, and jalapeños as you like.