In a large, heavy-bottomed saucepan, heat oil over medium-high. Add onion and garlic, and season with salt and pepper. Cook until softened, 3 to 5 minutes.
Add tomato paste, chili powder, and cocoa powder. Cook, stirring, until mixture is fragrant, about 1 minute. Add beef, and cook, breaking up with a spoon, until no longer pink, 3 to 5 minutes.
Add tomatoes (with their juice) and beans. Bring to a boil over high; reduce to a simmer, and cook until chili is slightly thickened, 10 to 15 minutes. Serve with toppings, if desired.