Well, if they are both cubes, so x+3 = y^3 and x^2+3 = z^3. Then:

(y^3 - 3)^2 + 3 = z^3

then z is probably "somewhere near y^2", so you could set z = y^2 + c. Then we must find a pair (c,y) in Z^{2} solving this. Then:

(y^3 - 3)^2 + 3 = (y^2 + c)^3

(y^3 - 3)^2 + 3 = (y^2 + c)^3

y^6 - 6y^3 + 12 = y^6 + 3y^4c + 3y^2c^2 + c^3

0 = c^3 + 3y^2c^2 + 3y^4c - 12 + 6y^3 = f(c)

Note that f(c) must have only one root, differentiating to show f'(c) >= 0:

3f'(c) = c^2 + 2y^2c + y^4 = (c + y^3)^2 >= 0

Then, note f(-1) < 0 and f(1) > 0, showing the unique root is somewhere in (-1,1) and then that f(0) is not 0, implying the non-existence of any integer pairs (c,y) for which f(c)=0:

f(-1) = -1 + 3y^2 - 3y^4 - 12 + 6y^3 = -3y^4 + 6y^3 + 3y^2 - 13

Which, clearly, for y > (6 + 3 + 13)/3, or y >= 8, has the term |-3y^4| greater than the absolute value of every other term combined, and so is negative. For y = 1 through 7, one may check by computation.

f(1) = 1 + 3y^2 + 3y^4 - 12 + 6y^3 = 3y^4 + 6y^3 + 3y^2 - 11

Which, clearly, for y > (6 + 3 + 11)/3, or y >=7, has the term |3y^4| greater than the absolute value of every other term combined, and so is negative. For y = 1 through 6, one may check by computation.

Completing the proof, we show that f(0) = -12 + 6y^3 has no integer roots in y. Its only real root is y=2^(1/3), not an integer. Therefore, x+3 and x^2+3 cannot both be perfect cubes.