Leyton Orient 1 Bristol Rovers 2
Adam Boyd had put Orient ahead on 56 minutes but it was not enough as defeat keeps them marooned in the bottom four and they have won just two homes games all season.
The first half was a largely disappointing affair with chances few and far between.
Rovers had the first effort when Chris Lines fired in a shot from distance but it flew straight at Orient keeper Glenn Morris.
The Jo Kuffour went close with an effort that sailed inches wide.
Orient responded and on 32 minutes Sam Parkin send Boyd away but his shot was blocked.
Charlie Daniels then went close when he rifled an effort into the side-netting.
Orient were forced into a reshuffle when midfielder Sean Thornton was replaced by Dean Morgan and as the home side lost their momentum, Rovers finished the half strongly as top scorer Rickie Lambert blasted a free-kick from 20 yards just inches over.
Orient made a second change at half-time with Ryan Jarvis replacing Parkin and the striker quickly made a difference with his pace.
The home side almost went ahead when Jarvis and Boyd combined to set up John Melligan but his shot was saved by Steve Phillips.
The breakthrough arrived four minutes later when Morgan's corner from the left was headed home by top scorer Boyd for his eighth league goal of the season.
Morgan almost added a second but then Rovers turned the game on its head.
On 74 minutes, Kuffour raced down the right and fired in a shot that Alton Thelwell blocked but the rebound fell invitingly for Hughes to lash home from a tight angle.
Four minutes later, Rovers completed a dream comeback when Thelwell lost possession and substitute Duffy gleefully raced clear to beat Morris and grab the winner.