Heat the oil in a medium Dutch oven or heavy pot over medium heat. Add half the chopped onions and the garlic and cook until soft, stirring, about 5 minutes. Add the chili powder, paprika, cumin, allspice, coriander, cinnamon, cayenne and cloves. Cook, stirring, until fragrant. Add the beef and cook the mixture, stirring, until the beef is no longer pink, about 5 minutes. Add 1 tablespoon salt.
Add the tomato sauce, diced tomatoes, bay leaf and 1 1/2 cups water; simmer the mixture, uncovered, stirring occasionally, until slightly thicker. Add the chocolate, vinegar and Worcestershire and cook until the mixture is thickened but still soupy, about 15 more minutes.
Meanwhile, bring a large pot of salted water to a boil over high heat. Cook the spaghetti according to the package directions. Drain well.
Discard the bay leaf and season the chili with the freshly ground pepper. Divide the spaghetti among bowls and top with the chili, beans, remaining onion and cheddar. Serve with the oyster crackers if desired.