Heat oil in a large saucepan over medium heat. Add onion and cook, stirring frequently, until tender, about 6 minutes. Add beef, in batches if necessary, and cook, breaking up with a wooden spoon, until browned. Add chili powder, cinnamon, cumin, allspice, bay leaf, chocolate, beef broth, tomato sauce, cider vinegar and red pepper. Stir to mix well. Bring to a boil. Reduce heat to low; cover and simmer 1 1/4 hours, stirring occasionally. It is best if you now refrigerate overnight.
Remove the bay leaf. Reheat gently over medium heat. Serve over hot, drained spaghetti with chopped onions and/or green scallions to garnish. Serves 8.

