Heat olive oil in a large pot or Dutch oven over medium heat.
Add onion and bell peppers and cook until softened, about 5-7 minutes.
Stir in garlic, chili powder, cumin, smoked paprika, oregano, and cayenne pepper (if using). Cook for 1 minute until fragrant.
Pour in crushed tomatoes, kidney beans, black beans, pinto beans, and vegetable broth. Stir to combine.
Bring the chili to a simmer, then reduce heat to low, cover, and cook for at least 30 minutes, stirring occasionally. For deeper flavor, simmer for 1 hour.
Stir in frozen corn during the last 10 minutes of cooking.
Season with salt and black pepper to taste.
Serve hot with your favorite toppings.
Notes
For a thicker chili, mash some of the beans against the side of the pot with your spoon before adding the corn, or simmer uncovered for the last 15-20 minutes.
This chili freezes well. Let it cool completely before transferring to freezer-safe containers.