I have to wonder if people aren't oversimplifying what they were taught in school. They boil it down to one simple answer and then, years later, "discover" that it's "wrong."
Sure, it's more complicated than simply saying the North was against slavery and the South was for. That kind of simplification is something good teachers warn their classes against.
But if you absolutely have to give the cause of the Civil War in one word to save your life, "slavery" wouldn't be a bad one.
Of course not all Southerners fought for slavery. And few Northerners wanted to abolish slavery in 1861. But slavery does account for the rift between the two sections, and concern over the future of slavery does explain much of the secessionist fervor that led to war.
Some people want to go on from that to say that this made the Northerners "good" and the Southerners "bad," and other people angrily rebel against such moralizing, but that's getting beyond reasons to passions.
A lot of Northerners owned slaves, and a lot of blacks in the South fought FOR the Confederacy. It was about raw materials and survivorship. When the Union blockaded the South, they forced the war. Hundreds of thousands of dead Americans later, their is still hatred because a few stupid people think the Confederate Flag means something they THINK or WANT it to mean.