In a large pot over medium heat, sauté the chopped onion in olive oil until translucent (about 5 minutes). Add minced garlic and cook for another minute.
Add ground beef, breaking it up as it browns (about 7 minutes).
Stir in tomato sauce, cocoa powder, chili powder, cumin, cayenne pepper, salt, and pepper. Cook for an additional 2 minutes.
Add about 2 cups of water to combine well. Bring to a gentle boil, reduce heat to low, cover, and simmer for at least 30 minutes.
If using kidney beans, stir them in during the last 10 minutes of cooking.
Serve in bowls topped with cheddar cheese, diced onions, and sour cream.