In a large saucepan, drizzle the olive oil over medium heat. Add the onions and cook until softened, stirring occasionally. Add the garlic and cook until just fragrant, 30 seconds to 1 minute.
Add the ground beef and cook, breaking it up into small pieces, until browned. Pour in the red wine and simmer for 2 minutes to reduce slightly.
Stir in the cinnamon, sugar, allspice, cloves, bay leaf, salt, pepper, crushed tomatoes, and water. Reduce heat to low and simmer, uncovered and stirring occasionally, until just a little liquid remains, 45 minutes to 1 hour. If the liquid dries completely before 45 minutes, add a little more water.
Immediately before serving, remove from heat and stir in the parsley.
About 10 minutes before the sauce is done, bring a large pot of salted water to a boil. Cook the spaghetti until al dente, just tender. Drain and serve immediately topped with the meat sauce and freshly grated cheese.