Your proof is headed in the correct direction, and you do need to show that $3\not\mid r^3$ if $0\lt r\lt3$. However, it might be easier to simply assume that $3\mid p^3$ and write $p=3q+r$ with $|r|\le1$ (instead of $0\le r\lt3$). Then, since (as you found) $p^3=(3q+r)^3=3(9q^3+9q^2r+3qr^2)+r^3$, the assumption $3\mid p^3$ implies $3\mid r^3$. But $|r|\le1$ implies $|r^3|\le1$, and the only such integer divisible by $3$ is $r^3=0$. Thus $p=3q$, so $3\mid p$.
Note that using $-1\le r\le1$ instead of $0\le r\le2$ is mainly a convenience; it makes the proof a little slicker. The crucial point is that the number of possible remainders is small enough that you can easily deal with all the different cases. I would not recommend taking this approach if the problem were, for example, to prove that $103\mid p^3\implies 103\mid p$.