You have the ellipse of the planets trajectory
$$
\left( \frac{x}{a} \right)^2 + \left( \frac{y}{b} \right)^2= 1
$$
(Note: I use a coordinate system, where the origin is not on the ellipse).
Further you have a start point $u_0 = (x_0, y_0)$ where the straight line of the ship's trajectory
$$
u = u_0 + v t \quad (*)
$$
will originate from.
A possible trajectory of the planet on the ellipse is
$$
(x, y) = (a \cos \omega t, b \sin \omega t) \quad (**)
$$
An intersection at some time $t \ge 0$ will lead to the equation:
$$
(a \cos \omega t, b \sin \omega t) = (x_0 + v_x t, y_0 + v_y t)
$$
or
$$
(f(t), g(t)) = (x_0 + v_x t - a \cos \omega t, y_0 + v_y t - b \sin \omega t) = (0, 0) = 0 \quad (***)
$$
Update:
Knowing now that the direction of $v$ is a degree of freedom, we can proceed.
$$
v = (v_x,v_y) = \lVert v\rVert (\cos(\phi),\sin(\phi))
$$
We have everything together to model the intersection problem in GeoGebra.
The given information which determines the problem instance is
$$
x_0, y_0, a, b, \omega, \lVert v\rVert \quad (P)
$$
the variables are
$$
\phi, t
$$
In the image below point $A$ is the start location of the ship. $B$ is the ship position at $t=1$.
The green ray from $A$ through $B$ is the trajectory $(*)$ of the ship.
The red ellipse is the trajectory of the planet $(**)$.
The intersection points of $(*)$ and $(**)$ are $C$ and $D$.
Point $S$ is the position of the ship at time $t$, $P$ is the position of the planet at time $t$.
In the interactive version (see link below), one can twiddle with the $t$ slider and watch the ship and planet move on their trajectories.
The goal is to find a value for $\phi$ which will lead to a common position for ship and planet at some time $t\ge 0$.
The key are the two functions from $(***)$, shown as $f(x)$ (purple line) and $g(x)$ (blue line). In the interactive version one notes that these graphs change depending on the value of $\phi$. To solve the problem one has to find a value for $\phi$ which causes the graphs of $f$ and $g$ to both have a root (zero value) at some $x\ge 0$. In the image you will notice two such arguments around $x=1.5$ and $x=4$. They correspond to the intersections $C$ and $D$. The present time $t$ of the scene is visualized by the vertical black line around $x=3.6$ (see $t$ slider as well), so ship and planet are shortly before impact at $D$, $t=4$.
In general, depending on the problem instance $(P)$, there might be no, one or two intersections.

To implement this procedure on a machine, we have to replace the human fiddling with the slider for $\phi$, looking for simultaneous roots of $f$ and $g$ by some numerics, solving equation $(***)$, thus
$$
F(\phi, t) =
\begin{pmatrix}
x_0 + \lVert v\rVert \cos(\phi) t - a \cos(\omega t) \\
y_0 + \lVert v\rVert \sin(\phi) t - b \sin(\omega t)
\end{pmatrix}
=
\begin{pmatrix}
0 \\
0
\end{pmatrix}
$$
Common methods are root finding by Newton-Raphson iteration or simple bisection, or reformulation as fixed point iteration.
If we look at the square of the distance between ship and planet we get this to
$$
q(\phi, t)
= (x_0 + \lVert v\rVert \cos(\phi)t - a \cos(\omega t))^2 +
(y_0 + \lVert v\rVert \sin(\phi)t - b \sin(\omega t))^2
$$
Update:
Here is a link to the interactive version: GeoGebra
Update:
I explained the Newton-Raphson iteration to my friend Ruby (see here),
and she performed it a couple of times for me.
irb> newton($u0, 1e-10, 20)
x0 = 1.0
y0 = 2.0
a = 2.0
b = 1.0
v = 1.0
w = 1.0
0: u=Vector[1.0, 2.0] f(u)=Vector[2.9128982848305642, 2.7736445427901115]
1: u=Vector[0.382829472675263, 0.3248271541942971] f(u)=Vector[-0.5940984322993181, 1.8021930994105337] d=1.8975913455808797
.
.
20: u=Vector[-94.18834695323662, 1959.9371619837884] f(u)=Vector[1955.6477996333003, 118.82040799198684] d=1959.2540941812401
maxstep = 20 reached, fail
=> nil
So it did not converge, when we started to look at $u_0 = (x_0, y_0) = (1,2)$ for a root. On the other hand $u=(\phi, t)$, so it was not a good idea in the first place.
irb> newton(Vector[-1,4], 1e-10, 20)
.
.
20: u=Vector[138.25481797929191, 454.49648517971787] f(u)=Vector[456.3793855184854, 12.384069736222514] d=456.5473783841737
maxstep = 20 reached, fail
Another miss.
irb> newton(Vector[-1,1], 1e-10, 20)
0: u=Vector[-1, 1] f(u)=Vector[0.45969769413186023, 0.317058030384207]
1: u=Vector[-1.5668891620557184, 1.0077918056648623] f(u)=Vector[-0.06352118626769587, 0.14656055765459897] d=0.15973396058722875
2: u=Vector[-1.664180141632932, 1.103100791097277] f(u)=Vector[-0.004523100381582101, 0.009095949944068482] d=0.010158481306123844
3: u=Vector[-1.67043452556281, 1.1098339180715397] f(u)=Vector[-1.951140039613275e-05, 4.57909054815131e-05] d=4.9774509241529196e-05
4: u=Vector[-1.670469710132332, 1.1098684183520295] f(u)=Vector[-6.100806526632141e-10, 1.337344013307984e-09] d=1.4699276896108456e-09
5: u=Vector[-1.6704697111186804, 1.1098684193565171] f(u)=Vector[-2.220446049250313e-16, 2.220446049250313e-16] d=3.1401849173675503e-16
d=3.1401849173675503e-16 < eps=1.0e-10, success
Yeah, this one worked!
irb> newton(Vector[0,0], 1e-10, 20)
0: u=Vector[0, 0] f(u)=Vector[-1.0, 2.0]
Jacobian Matrix[[-0.0, 1.0], [0.0, -1.0]] is not regular at u=Vector[0, 0]!
=> nil
Ouch, another bad start. This reminds, that one has to come up with a good start value, close to the suspected root, for this method to work.