The first John Woo movie I saw was Broken Arrow, which I positively hated. Most action movies have plot holes and unrealistic character behaviors (not to mention unrealistic action sequences), but I've never seen anybody as dumb as the guys in that movie. Roger Ebert's hilarious review of Broken Arrow touches upon all of the things that I disliked.
Face/Off is also directed by John Woo, and also stars John Travolta. However, it's a much, much better movie than Broken Arrow. The plot still has some large holes (How did Archer escape from prison? How did Troy wake up from his coma in such good condition? Can a faceless guy really talk and smoke?), but they're not big enough to be a real problem. In fact, the latter question is even kind of funny if you think about it for too long.
More importantly, though, is that we have rational characters and good acting. Travolta and Cage did an excellent job of switching roles from the good guy to the bad guy and vice versa, each assuming the mannerisms of the other. I think Cage had a slightly better performance, partly because the role of Sean Archer involved more inner turmoil and mixed emotions than the role of Castor Troy.
The basic plot of Face/Off isn't that original, if you think about it: good guy and bad guy trade identities. But the movie was very well done, and I liked watching the two men try to assimilate into each other's worlds. Archer is unsure of himself in his new criminal world, while Troy relishes his new power as a respected FBI man.
The directing and most of the action sequences work well. Perhaps the biggest problem is the final chase scene, which seems to last forever. It's hard to believe that two trained killers could survive against each other for so long in such close quarters.