Prep everything first. Dice the onion and bell pepper, mince the garlic, and measure out your spices into a small bowl so they're ready to go.
Brown the beef. Heat the olive oil in a large Dutch oven over medium-high heat. Add the ground beef and cook, breaking it up, until browned, about 6-7 minutes. Don't drain — that rendered fat is flavor.
Bloom the spices. Add the onion and bell pepper and cook until softened, about 5 minutes. Stir in the garlic, chili powder, cumin, smoked paprika, oregano, and cayenne. Cook, stirring constantly, for 1 minute until deeply fragrant.
Build the base. Stir in the tomato paste and cook 1 minute more, then pour in the crushed tomatoes, both beans, beef broth, and brown sugar. Season with salt and pepper.
Simmer low and slow. Bring to a gentle boil, then reduce the heat to low. Cover partially and simmer for 45 minutes, stirring occasionally, until thick and rich.
Taste and serve. Taste and adjust the salt, heat, and sweetness. Ladle into bowls and load up with your favorite toppings.