Heat the olive oil in a large Dutch oven or heavy-bottomed pot over medium-high heat. Add the ground beef and cook, breaking it up with a spoon, until browned. Drain off any excess grease.
Add the chopped onion and bell peppers to the pot. Cook, stirring occasionally, until softened, about 5-7 minutes.
Stir in the minced garlic, minced chipotle peppers, and adobo sauce. Cook for another minute until fragrant, being careful not to burn the garlic.
Pour in the crushed tomatoes, diced tomatoes, and beef broth. Stir to combine, scraping up any browned bits from the bottom of the pot.
Add the drained and rinsed kidney beans and black beans. Stir in the chili powder, smoked paprika, cumin, oregano, and cayenne pepper (if using).
Bring the chili to a simmer, then reduce the heat to low, cover, and let it cook for at least 30 minutes, stirring occasionally. For deeper flavor, simmer for 1-2 hours.
Season generously with salt and freshly ground black pepper to taste. Adjust seasonings as needed.
Serve hot with your favorite toppings.