I always find the "algebraic closure" approach to be the best bet for explaining complex numbers. Much like how having negative numbers means that you can subtract any two numbers (closure under addition), having complex numbers means you can find the roots of any polynomial. If you don't have complex numbers, something like `x^2 + 1` has no real roots, and you have a problem.
The really nice part of this explanation is that it tells you why complex numbers show up everywhere. It turns out that it's rather straightforward to find physical real-world problems with input parameters that are coefficients to polynomials and behavior that depends on the roots of those polynomials. Take a slinky or another other harmonic oscillator - when you model it with a differential equation, the polynomial coefficients are how heavy the slinky is, how much speed-dependent resistance there is, and how springy it is. Factoring the polynomial gives you the behavior over time, and it pretty much always has some sort of behavior, so the roots should be some kind of number.