Warm the pot: Heat a large Dutch oven over medium-high. Add avocado oil.
Brown the beef: Add ground beef and break it up.
Season with a big pinch of salt and pepper. Cook until well browned with some crusty bits, about 7–9 minutes. Transfer to a bowl, leaving fat in the pot.
Sauté aromatics: Add onion, bell pepper, and poblano to the pot.
Cook until softened and lightly browned, 6–8 minutes. Stir in garlic and cook 30 seconds until fragrant.
Build the spice base: Stir in chili powder, smoked paprika, cumin, oregano, coriander, and cinnamon. Toast 30–45 seconds, stirring constantly, to bloom the spices.
Add chipotle and cocoa: Stir in minced chipotles, adobo sauce, and cocoa powder.
Cook 30 seconds to meld.
Tomatoes and paste: Add the tomato paste and cook 1 minute to caramelize slightly. Pour in fire-roasted tomatoes and scrape up any browned bits.
Return beef and add broth: Add the browned beef and bone broth. Bring to a gentle boil, then reduce to a simmer.
Simmer low and slow: Partially cover and simmer 30–45 minutes, stirring occasionally, until thickened to your liking.
Add water or more broth if it gets too thick.
Finish and balance: Stir in apple cider vinegar. Taste and adjust salt, pepper, and chipotle heat. If you want extra smokiness, add a pinch more smoked paprika.
Serve: Ladle into bowls and top with avocado, sour cream, cheddar, cilantro, jalapeños, and a squeeze of lime.
Keep toppings keto-friendly.