Ajax are top with 63 points after 29 matches and travel to third place PSV Eindhoven, 60, on Sunday. Vitesse moved into second with 61, while Feyenoord, away at RKC Waalwijk, are fourth with 59.
Japan international Mike Havenaar headed home the opening goal after 26 minutes and doubled the lead 10 minutes later when he picked up a pass from Wilfried Bony and finished.
Bony seemed to settle the match 10 minutes after the interval when he grabbed his 30th of the season but eight minutes later Sanharib Malki converted a penalty to pull one back for Roda.
Frank Demouge added a second with 20 minutes remaining before Donald headed home from close range after the ball bounced back off the post after a header from Vitesse defender Guram Kashia.
"Now we can stop dreaming about winning the title," said Vitesse midfielder Theo Janssen.
"Seeing the schedule of the other candidates the second place is the highest possible for us.
"We did not play so well but leading 3-0 there was no problem till we gave away that first goal and after that we did everything wrong."
Fifth placed Twente Enschede, on 54 points, beat 10-man ADO Den Haag 3-1 thanks to a late double from substitute Dmitry Bulykin who sealed the win with goals in the 81st and 83rd minutes.
Groningen stayed on track for a Europa League play off berth beating Heracles Almelo 2-0 thanks to second half goals from David Texeira and Leandro Bacuna to move into seventh with 39 points.