Doncaster came from behind to secure a 2-1 win and inflict a first defeat on Swansea at the New Stadium.
When Kevin McLeod headed them in front one minute before the interval it looked as though a third victory of the season was on the cards, but Donny hit back after the break to take all three points.
The Swans were dealt a blow before kick-off when leading scorer and talisman Lee Trundle was ruled out through injury. They were also without Kris O'Leary and Izzy Iriekpen who were both suspended after being red carded at Huddersfield.
Making a return to Swansea following his transfer from Bristol Rovers was Christian Edwards while there was also a debut for Owain Tudur-Jones.
Former Rover's striker Bayo Akinfenwa had the first strike on goal in the fourth minute when he met a cross from McLeod but headed straight at Rover's keeper Andy Warrington.
The visitors tore straight back on the attack and Paul Heffernan forced Willy Gueret to save at full length.
The early pressure was coming from Rovers and Gueret was kept busy as Roberts and Heffernan tried to work their way in.
Eight minutes before the break Roberts sent a header spinning inside the far post but Gueret dived to palm clear.
The Swans went ahead against the run of play one minute from the break when a deep cross from Leon Britton was headed into the net by McLeod.
Rovers manager Dave Penney, a former Swansea skipper, changed the game with a couple of substitutions late in the second half.
James Coppinger was introduced for the highly-rated Sean Thornton in the 72nd minute and, with his first touch, he slipped a square pass to Dave Mulligan who side-footed home from 15 yards.
Penney pulled another replacement out of the hat when he pushed Lewis Guy up front and in the 85th minute the substitute flipped Swansea's off side trap and rolled the ball into an empty net for the winner.
The Swans tried desperately to recover from these double blows but the Rovers rear guard held firm and Penney's changes had turned the game.