Heat oil in a large heavy-bottomed pot or Dutch oven over medium-high heat. Add onions and bell pepper and cook until softened, about 8 minutes. Stir in garlic, chili powder and cumin and cook until fragrant, about 30 seconds.
Add beef and salt and cook about 8 minutes until beef is no longer pink, breaking the meat into small pieces with a wooden spoon.
Stir in beans, broth and tomatoes. Simmer over medium heat, stirring occasionally, until the flavors meld, about 1 hour. Stir in vinegar. Serve with toppings, as desired.