Brown the beef well: Heat a large pot or Dutch oven over medium-high.
Add the ground beef and break it up. Cook until deeply browned with crispy edges, 7–10 minutes. If there’s a lot of fat, spoon off excess, leaving about 1–2 tablespoons.
Sauté the aromatics: Add the onion and bell pepper.
Cook until softened, 5–7 minutes. Stir in the garlic and cook 30 seconds, just until fragrant.
Bloom the spices: Sprinkle in chili powder, cumin, smoked paprika, cayenne (if using), salt, and black pepper. Stir and let the spices toast for 30–60 seconds so they release their oils and deepen in flavor.
Add tomato paste: Stir in the tomato paste and cook for 1–2 minutes to caramelize slightly.
This step adds sweetness and a richer tomato backbone.
Build the base: Pour in crushed tomatoes, diced tomatoes, and beef broth. Add Worcestershire and sugar or honey if using. Stir well, scraping up any browned bits from the bottom of the pot.
Simmer low and slow: Bring to a gentle boil, then reduce heat to low.
Partially cover and simmer 30 minutes, stirring occasionally. This melds flavors and starts thickening.
Add beans: Stir in the drained beans. Simmer another 15–20 minutes, uncovered, until the chili is thick and glossy.
If you want it thicker, proceed to the next step.
Thicken to your liking: Mix masa harina or cornstarch with 2 tablespoons cold water to make a slurry. Stir into the chili and simmer 5 more minutes. Adjust thickness with a splash of broth if needed.
Taste and adjust: Add more salt, pepper, or cayenne to taste.
If it’s too tangy, a pinch of sugar helps. If it’s flat, a squeeze of lime or a splash of Worcestershire can brighten it.
Serve with toppings: Ladle into bowls and finish with cheddar, sour cream, scallions, jalapeños, cilantro, or a squeeze of lime. Cornbread, rice, or tortilla chips make great sides.