I personally don't see automatic damage as a problem, but to address these concerns, maybe we should have a rule that a missed attack cannot reduce the target's hp to 0 or below. That way, the final blow that kills an opponent will always be a hit.
If you like, you can also flip it around for saving throws, i.e. if you pass your saving throw, you will always have at least 1 hp left.
This way, for magic missile, the wizard deals automatic damage, but must roll to see if he "hits" an opponent with low hit points. Alternatively, the low-hp opponent must succeed on a Dexterity save or die.