1 medium red bell pepper, cored, seeded, and diced
2 medium carrots, peeled and diced
2 stalks celery, diced
1 medium sweet potato (about 12 ounces), peeled and cut into 1/2-inch cubes
3 cloves garlic, minced
3 tablespoons chili powder
2 tablespoons tomato paste
1 tablespoon unsweetened natural cocoa powder
1 tablespoon ground cumin
2 teaspoons dried oregano
1/2 teaspoon ground cinnamon
1 teaspoon kosher salt, plus more for seasoning
1/2 teaspoon freshly ground black pepper, plus more for seasoning
1 (28-ounce) can fire-roasted diced tomatoes
3 cups low-sodium chicken broth
1 tablespoon apple cider vinegar
For serving (optional):
1 medium avocado, diced
2 medium scallions, thinly sliced
1/2 cup coarsely chopped fresh cilantro
Pat the beef cubes dry with paper towels. Season generously with salt and pepper. Heat 2 tablespoons of the oil in a Dutch oven or large heavy-bottomed pot over medium-high heat until shimmering. Working in batches, add the beef cubes in a single layer and sear until browned on all sides, 1 to 2 minutes per side. Transfer the meat to a large bowl; set aside.
Add the ground beef and cook, breaking up the meat with a wooden spoon, until browned and cooked through, 6 to 8 minutes. Using a slotted spoon, transfer the meat to the bowl with the seared beef cubes.
Reduce the heat to medium, add the remaining 1 tablespoon oil, and heat until shimmering. Add the onion, bell pepper, carrots, celery, sweet potato, and garlic, and cook, stirring occasionally, until softened, about 8 minutes. Add the chili powder, tomato paste, cocoa powder, cumin, oregano, cinnamon, salt, and pepper. Stir to combine and cook for 2 minutes.
Return the beef and any accumulated juices to the pot. Add the tomatoes and their juices and the broth and stir to combine. Bring to a boil, then reduce the heat to low and simmer uncovered, stirring occasionally, until the beef is tender, about 1 hour. Remove from the heat and stir in the vinegar. Serve topped with avocado, scallions, and cilantro if desired.