Pat beef cubes dry with paper towels and season generously with salt and pepper. Heat 1 tablespoon oil in a large Dutch oven over medium-high heat.
Working in batches to avoid crowding, brown beef cubes on all sides, about 8-10 minutes total. Transfer to a plate and set aside.
Add remaining oil to pot and sauté onions and bell pepper over medium heat until softened, about 6-8 minutes. Add garlic and cook until fragrant, 1 minute more.
Add chili powder, cumin, smoked paprika, oregano, and cocoa powder. Stir constantly for 1-2 minutes until spices are fragrant and coat the vegetables.
Stir in tomato paste and cook for 2 minutes, stirring frequently. Add diced tomatoes, chipotle peppers with adobo sauce, and beef broth.
Return browned beef and any accumulated juices to pot. Add brown sugar, vinegar, salt, and pepper, stirring to combine well.
Bring to a boil, then reduce heat to low. Cover and simmer for 2 to 2.5 hours, stirring occasionally, until beef is fork-tender.
If using beans, stir them in during the last 30 minutes of cooking. Taste and adjust salt, pepper, or add more chipotle peppers for extra heat.
Ladle into bowls and serve with desired toppings: sour cream, cheddar cheese, jalapeños, cilantro, lime wedges, and avocado.