Heat the olive oil in a large pot or Dutch oven over medium heat. Add the diced onion and bell pepper. Cook until softened, about 5 minutes. Stir in the garlic and cook for 1 more minute until fragrant.
Add the ground beef and cook until browned, breaking it up with a wooden spoon as it cooks. Drain any excess fat if necessary.
Stir in the chili powder, cumin, smoked paprika, oregano, cayenne, salt, and black pepper. Toast the spices with the meat for about 1 minute to release their flavor.
Add the diced tomatoes, tomato paste, and broth. Stir to combine, then add the kidney beans and black beans. Bring the mixture to a boil.
Reduce heat to low and let the chili simmer uncovered for at least 30 minutes, stirring occasionally. For deeper flavor, let it cook for 1 hour or more. The longer it simmers, the richer it gets.
Taste and adjust seasonings as needed. If you prefer a thicker chili, let it simmer longer uncovered. For a thinner consistency, add a splash more broth.
Serve hot with your favorite toppings.