Assuming you have not had the lower unit off and turned the shift rod out of adjustment......
Could simply be a cable out of adjustment, check and adjust as follows:
(Centering Shift Cable)
(J. Reeves)
When all is as it should be, the proper method to adjust the shift cable is to disconnect the cable from the engine. Move the shift linkage on the engine to find the center of the play in neutral, and when found, leave it centered.
Now, grab the end of the shift cable sleeve, push and pull it to find the center of the play there, and center that play.
Adjust the trunion on the threaded portion of the shift cable so that the centered play of the cable lines up with the centered play of the engine's shift linkage. Install and lock the shift cable with the retaining clamp in that position. That's it.
If centering the cable as above makes no improvement, in all probability the lobes on the dog and gear is worn/rounded off.