Heat a Dutch oven or heavy-bottomed pot over medium high heat. Add oil and onions. Cook until softened, about 5 minutes.
Add in the ground beef, using a wooden spoon to break up the beef into very small pieces. Season with salt and pepper.
Add the garlic and all of the spices and stir. Cook until fragrant, about 1 minute. Next, add in the tomato paste and stir to combine, cooking for another minute. Then add in the chocolate, Worcestershire sauce, brown sugar, apple cider vinegar, chicken broth, and tomato sauce. Season with salt and pepper.
Stir to combine and bring to a boil. Reduce the heat and simmer until thickened, about 30 minutes, stirring occasionally. Taste and season with salt if necessary.
Serve over cooked spaghetti with desired toppings.