Can a cubic that crosses the x axis at three points have imaginary roots? I have a cubic polynomial, $x^3-12x+2$ and when I try to find it's roots by hand, I get two complex roots and one real one. Same, if I use Mathematica. But, when I plot the graph, it crosses the x-axis at three points, so if a cubic crosses the x-axis a three points, can it have imaginary roots, I think not, but I might be wrong.

The three roots are, approximately, $z = -3.545$, $0.167$ or $3.378$.
A corollary of the fundamental theorem of algebra is that a cubic has, when counted with multiplicity, exactly three roots over the complex numbers. If your cubic has three real roots then it will not have any other roots.
I've checked the plot, and you're right: there are three real roots. All I can think is that maybe you have made a mistake when substituting your complex "root" into the equation. Perhaps you might like to post the root and we can check it for you.
Another thing to convince you there's an error. Let $z= r_1,r_2,r_3$ be the three real roots. If $z=c$ is your complex root then the conjugate $z = \overline{c}$ must also be a root. Thus:
$$z^3-12z+2 = (z-r_1)(z-r_2)(z-r_3)(z-c)(z-\overline{c}) \, . $$
Hang on! That means your cubic equation starts $z^5 + \cdots$ and isn't a cubic after all. Contradiction! Either it doesn't have three real roots, or your complex "root" is not a root after all.
Beware that computer programs use numerical solutions and you get rounding errors. 
