In a 12-inch high-sided pan or medium Dutch oven, heat the olive oil over medium-low heat. Add the onions, and cook, stirring occasionally, for about 10 minutes, or until they are translucent and softened. Add the garlic and cook, stirring, for 1 minute more. Transfer to a plate and refrigerate to cool slightly, about 10 minutes. Reserve the pan.
In a wide bowl, soak the bread in the water until softened, about five minutes. While the bread soaks, combine the lamb, egg, cumin, cinnamon, allspice, oregano, salt, and pepper in a large bowl. Break the bread up coarsely with your fingers. Add it and the cooled onion mixture to the lamb. Mix the ingredients until combined, being careful not to over-mix, and making sure the bread is evenly distributed with no large chunks remaining.
Roll heaping tablespoons of the lamb mixture between your palms to make balls, about 24 total. Place them in a container in a single layer and refrigerate for about 10 minutes. While the meatballs chill, make the sauce.
Return the pan to low heat, add the tomatoes and their juice, the salt, sugar, oregano, and red pepper flakes, and simmer, stirring occasionally, for 10 minutes, so the flavors develop.
Add the meatballs and bring the mixture back up to a simmer over low heat. Partially cover and simmer for 35 to 45 minutes, until the meatballs are cooked through, stirring the sauce occasionally and turning the meatballs a few times.
While the sauce simmers, cook the pasta according to the package directions. Drain and keep warm.
When you are ready to serve, divide the spaghetti between 6 pasta bowls. Fold the fresh parsley into the sauce. Spoon 4 meatballs into each bowl and divide the sauce evenly between the bowls.