Chris McGready's fierce long-range effort was brilliantly tipped round the post by Rhys Taylor midway through the first half.
Despite chances for Morecambe's Phil Jevons and Crewe's Joel Grant, neither side could find a way through before the break.
Barry Roche denied Danny Shelley and Shaun Miller in quick succession following the restart.
But it was the visitors who took the lead in the 58th minute when Jevons provided a cross for Garry Hunter, who fired home from inside the area.
The prolific Donaldson then stirred into life and his driven effort produced a fine save from Barry Roche.
But the Shrimps goalkeeper had no chance with Donaldson's close-range finish on 71 minutes.
And Donaldson grabbed his 27th of the season in stoppage time when he headed home Lee Bell's cross.
Source: PA
Source: PA