In a large saucepan, drizzle the olive oil over medium heat.
Once heated, add the onions and cook until softened, stirring occasionally.
Add the garlic and cook until just fragrant, 30 seconds to 1 minute.
Stir in the ground beef and cook, breaking it up into small pieces, until browned.
Pour in the red wine, scraping the bottom of the pan to remove any browned bits, and simmer until slightly reduced, about 2 minutes.
Stir in the cinnamon, oregano, 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, discard the bay leaf, 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.