Heat oil in a large pot over medium heat; brown the ground beef, breaking it up, 6–8 minutes. Drain excess fat if needed.
Add diced onion and garlic; cook until softened, about 4 minutes. Stir in tomato paste and spices, cooking 1 minute to bloom flavors.
Pour in diced tomatoes, beef broth, beans, cocoa powder, and brown sugar; bring to a simmer.
Reduce heat low and gently simmer, uncovered, 45–60 minutes, stirring occasionally until flavors meld and chili thickens.
Taste and adjust salt, pepper, or spice. Serve with toppings.