It's trite, and more than a little stupid, to say that Zidane's wrong exonerates Materazzi. Zidane shouldn't have headbutted the guy, for a few reasons. First, there was a greater good at stake (winning the game). Personal honour should've been sacrificed for that (heck, the guy was the team captain; one could argue it was his job to so sacrifice). And, second, no matter what he said, being able to shove the trophy in Materazzi's face would've been a sweeter victory than hitting him. That said, the fact that he hit him, viewed in isolation, is not wrong; indeed, it may have been morally required. I fail to see why insults to honour should be borne without complaint -- that seems like the kind of thing grade school teachers tell the little kidlets about, not the kind of complex moral thinking that adults should be exemplifying.
So, then, Materazzi was clearly in the wrong in that regard. Moreover, Materazzi was clearly trying to antagonize Zidane in order to get him red-carded and improve Italy's chances of winning (successfully, as it turns out), which is a pretty blatant form of cheating. Regardless of whether it's "against the rules", clearly Materazzi was trying to give his team an unfair advantage through unfair means.
Finally, the refs in this behaved appallingly badly. First, to review a call after the fact because a team protested is, as far as I know, almost unheard of in football. If it's going to be allowed then, to be fair, every team needs a shot at getting a review -- perhaps a certain number of calls can be challenged by the coaches, analogous to the limited number of side changes. If this is not the case, then the ref's initial call should be final -- he should not be unable to second-guess even himself. Anything else is open to abuse of a referee's discretion by teams looking for an unfair advantage, like Italy.
Speaking of the Italian team, incidentally, they played very badly. Both teams were diving left and right, but the French were clearly outplaying them. The Italians were looking for the shoot-out, so, flooded their half of the field with their entire side. It was extremely pathetic obstructionist tactics, and I tend to agree with those who think that the rules need to be changed to prevent this. Even though the NHL has introduced shoot-outs into its games, it's worth noting that playoff games can still go into infinite overtime. That, I think, is a good model. While regular games maybe shouldn't go on forever, play-off games matter too much to the integrity of the sport to be allowed to be decided essentially by chance (at high levels of play, penalty shots are hit far more often than missed, hence it's a crap shoot who misses a shot; this isn't baseball, after all, where connecting one-third of the time is considered very good (.333 batting average)).