Heat the pot. Place a large Dutch oven or heavy pot over medium-high heat.
Add the oil and let it shimmer.
Brown the beef. Add the ground beef and season lightly with salt and pepper. Cook, breaking it up, until nicely browned and most liquid evaporates, about 7–9 minutes. If there’s excess grease, spoon off a bit, but leave some for flavor.
Sauté the aromatics. Add the onion, bell pepper, and jalapeño.
Cook until softened, about 5 minutes. Stir in the garlic and cook 30 seconds until fragrant.
Bloom the spices. Add chili powder, cumin, smoked paprika, oregano, coriander, cocoa powder, and espresso powder (if using). Stir for 30–60 seconds to toast the spices.
Build the base. Stir in tomato paste and cook 1 minute.
Pour in crushed tomatoes and beef broth. Scrape up any browned bits from the bottom of the pot.
Simmer low and slow. Bring to a gentle simmer, then reduce heat to low. Partially cover and cook 45–60 minutes, stirring occasionally, until thickened.
Add a splash of water or broth if it gets too thick.
Finish and balance. Stir in apple cider vinegar. Taste and adjust salt, pepper, and heat level with red pepper flakes or cayenne.
Serve with toppings. Ladle into bowls and top with cheese, sour cream, avocado, cilantro, or green onions. Enjoy hot.