Reasonable accuracy is obtained from the formula z = sqrt(|X1 - X2|-1)2/N or the equivalent formula chi-square = (|X1 - X2|-1)2/N, where X1 and X2 are the observed frequencies in the two categories. The p found from the chi-square formula is one-tailed only in a mechanical sense, since a high chi-square results from observing differences in either direction between the two cell frequencies. To find a p that is one-tailed in the logical sense, divide that p by 2. The z version of the formula gives one-tailed and two-tailed p's in the usual way.
I have compared values of p calculated from this formula to the binomial values of p, for every possible outcome for which the binomial values of the one-tailed p lie between .005 and .1 and N from 5 to 200. Within these ranges the calculated p is always between 1 and 1.36 times the true p. Thus the formula gives accuracy that is acceptable for most purposes, though far greater accuracy can be obtained from the likelihood-ratio test.
There is no real room to improve the Pearson formula by lowering the continuity correction (which shows up as the subtraction of 1 in the formulas above); lowering the value subtracted even by as little as .008, thereby changing it from 1 to .992, makes some calculated p's fall below their true binomial values, and lowering it to .993 lowers the upper limit of (calculated p/true p) only from 1.36 to to 1.35.
For p-values below .005 the present Pearson formula is never liberal (that is, the calculated p never falls below the correct p), but the calculated p may be hundreds of times the correct p for N below 50 or over a million times the correct p if N falls between 50 and 100.