Heat the olive oil in a large Dutch oven over medium heat. Add the diced onion and sauté for 5-7 minutes until softened.
Stir in the minced garlic and cook for an additional minute until fragrant.
Add the ground beef to the pot, breaking it apart with a wooden spoon. Cook until browned, about 8-10 minutes, draining off any excess fat.
Sprinkle in the chili powder, cumin, smoked paprika, cayenne pepper, salt, and pepper. Stir well to coat the meat and onion mixture with the spices.
Pour in the diced tomatoes (with juices), kidney beans, black beans, and beef broth. Stir to combine all ingredients.
Bring the chili to a simmer, then reduce the heat to low. Cover and let it cook for about 1 hour and 30 minutes, stirring occasionally.
Taste and adjust the seasoning as needed, allowing the chili to simmer longer if you desire a thicker consistency.
Serve hot in bowls and top with optional toppings such as shredded cheese, sour cream, and diced green onions.