Preheat your pot: Set a heavy pot or Dutch oven over medium-high heat. Add the olive oil and let it get hot.
Brown the beef: Add the minced beef in an even layer.
Don’t stir for 2–3 minutes to get good browning, then break it up and cook until no longer pink. Season lightly with salt and pepper. If there’s a lot of fat, spoon off a bit, but leave some for flavor.
Cook the aromatics: Push the beef to one side.
Add the onion and red pepper to the empty side with a pinch of salt. Cook 3–4 minutes until softened. Stir in the garlic and cook 30 seconds until fragrant.
Toast the spices: Add cumin, chili powder, smoked paprika, oregano, and coriander.
Stir for 30–60 seconds to bloom the spices.
Add tomato paste: Stir in the tomato paste and cook for 1 minute to caramelize slightly. This deepens the flavor.
Build the sauce: Pour in the tomatoes and 1 cup of stock. Add the brown sugar (or honey), a pinch more salt, and optional Worcestershire or cocoa/dark chocolate if using.
Stir well.
Simmer: Bring to a gentle simmer, then lower the heat. Cook uncovered for 25–35 minutes, stirring occasionally. Add more stock if it gets too thick.
You want a rich, spoonable texture.
Add the beans: Stir in the kidney beans and simmer 5–10 more minutes so they warm through and absorb flavor.
Taste and adjust: Add salt, pepper, and optional cayenne or chipotle to taste. If it’s too acidic, a splash more stock or a tiny pinch of sugar helps. If it’s too thick, add a little water or stock.
Serve: Ladle into bowls and top with sour cream, cheddar, coriander, spring onions, and a squeeze of lime.
Pair with rice, crusty bread, or tortilla chips.