Striker Matt Fryatt fired a dramatic late double to end Leicester City's mini-slump.
The Foxes had been desperate to end a streak of four games without a win, but they were up against a buoyant Bristol Rovers side who started the match top of the League One form guide.
The first attempt on goal fell to City, with Andy King testing Steve Phillips from 20 yards.
Rovers' first threat came on 14 minutes when Rickie Lambert played the ball inside to Jo Kuffour whose 18-yard drive was gathered safely by Paul Henderson.
Midway through the first half Craig Hinton headed a Stuart Campbell corner over the bar as the visitors continued to commit men forward in a flowing game.
In the final minutes of the first half Lloyd Dyer set up King, whose 25-yard shot flew narrowly wide.
The home side had loud penalty claims waived aside on 52 minutes after David Pipe appeared to handle the ball inside the area.
Then moments later the referee ruled that a Campbell foul on Fryatt had been a fraction outside the area, with Dyer firing the resultant free-kick onto the roof of the net.
On the hour mark Rovers Jeff Hughes's long-range shot extracted a sprawling save from Henderson, but a minute later Rovers took the lead with a spectacular strike from Kuffour.
Ryan Green played a throw-in towards the edge of the D, with the ball bouncing once before Kuffour swivelled and struck a fierce shot into Henderson's top left-hand corner.
Dyer had a sniff of goal five minutes from the end when he was put through by Nicky Adams, but Phillips was quickly off the line to snuff out the danger.
But City plundered an equaliser on 86 minutes when Fryatt latched on to a Barry Hayles knock-on, before firing a low shot across Phillips and into the far corner of the net.
And the clock read 93 minutes when Rovers failed to clear an Adams corner and from the ensuing scramble Fryatt took full advantage to ram the ball home from close range.