First of all, you should make all calculations about what acceleration to apply in the missile’s frame of reference (that’s where the missile is stationary and everything else moves around it, also often called “object coordinates” or “local coordinates” in game engines, though in our case we want the velocity to be exactly zero as well).
The idea then is not to aim for the target, but to aim for the place where the target will be at the estimated time of impact. So the general algorithm looks like this:

Estimate how much time it will take for the missile to reach the target. If the target is flying directly at it (remember, the missile is stationary), it can be as simple as calculating distance / speed, in other cases it can be more complicated. If the target can try and evade you won’t be able to make a perfect estimate anyway, so it’s ok to not be very precise.

Assuming constant speed (1st degree estimate) or constant acceleration (2nd degree estimate) of the target, calculate where it will be at the estimated time above.

Calculate acceleration which will lead to the missile to be at roughly the same spot at the same time.

Reproject the acceleration back from the missile’s frame of reference to the global one, use that.
The important part here is to get the time estimate in the rough ballpark, and to not forget the missile’s acceleration capabilities while doing so. For example, a better estimate for “the target is straight ahead of us and flying in our direction” would be to solve the equation ..
distance = speed x time + 1/2 x acceleration x time^{2}
… for time (use negative speed for objects flying straight away from the missile), with the solution you’re looking for using the standard quadratic formula being …
time = (√(speed^{2} + 2 x acceleration x distance) – speed) / acceleration
Adding additional parameters – drag, for example – quickly turns this into differential equations with no algebraic solutions. This is why rocket science is so hard.
@Martin Sojka already told you what to do. Instead of improving his response I want to propose you another simpler aproach: DELOCK
As I said in Projected trajectory of a vehicle?, objects with limited steering capabilities do “project” a couple of shadow cirles: two regions that can not be reached via direct steering (a torus and an hypertorus in higher dimensions).
When you see that you target is entering in one of such steering shadows, you can stop homing your target and keep another direction for a limited amount of time.
The delocking trigger can be computed easily by aproximating your tori with a (double) cone*:
You have to simply compute the scalar product between your (normalized) direction vector and your target displacement vector ( Target – Object /Target – Object ).
As the scalar product goes to zero, your target direction becomes perpendicular to your direction leading to a circular trajectory**. When the target falls into the cyan region you can invert your steering direction so you can put it outside the unreachable area and rehoming.
* To be honest this is not a cone… is another kind of ruled surface generated by (semi) revolution of two non parallel lines around an axis passing through the intersection and perpendicular to the bisector line; The projection on a 2D plane is the same as the double cone, but the rotation axis is perpendicular to the one that generates the cone.
** That trajectory is unlikely to be circular nor elliptic or even closed. The chances are that the trajectory will follow a spirograph like path (an hypotrochoid) in 2D or even other monsters in 3 and up dimensions. You can not reach the center of such curves anyway and they look like circles so “circular” trajectory.
Your guidance system is built on the assumption that accelerating directly towards the target will eventually cause the objects to collide. Since that assumption is false, the guidance AI based on that assumption is likewise unsuccessful.
So stop accelerating directly towards the target. Add some logic to detect if the target’s position is somewhat perpendicular to the direction of the missile’s motion. If so, then the missile needs to accelerate towards the target, but also slow down its forward motion. So rather than going directly towards the target, it biases the direction of its acceleration so that the current speed in its direction of motion is slowed down.
Also, you’ll need a trigger to make sure that you’re not going too slow. So add some threshold speed such that, if you’re below that threshold, you stop doing the biasing.
One last thing: no guidance system will be perfect. The reason missiles can intercept targets in real life is that targets move much slower than the missiles themselves, and the targets are not particularly nimble (relatively speaking). If your missiles are not going to be many times faster than the targets they chase, then they will miss a lot.