Chris Brown's 10th goal of the season had given Brian Flynn's side the lead but Jed Wallace struck with 15 minutes to go for lowly Pompey.
Sheffield United could not capitalise on the surprise result at the Keepmoat Stadium as they were steamrollered 4-0 by a rampant Stevenage side.
The Blades were heavy favourites to beat out-of-form Stevenage but a Dani Lopez hat-trick and a Lucas Akins effort gave Gary Smith's side the win.
It was Brentford who took full advantage of Doncaster's draw and Sheffield United's loss as a 93rd-minute Sam Saunders penalty secured a 1-0 win over Preston at Griffin Park and saw them move into second spot.
The game looked set to end in a goalless draw before Saunders was fouled by John Mousinho deep into added time.
Bournemouth moved up to fourth after a tight 1-0 win at 21st-placed Oldham.
Brett Pitman's 12th of the season sealed the three points but Oldham missed a late penalty when Jose Baxter attempted a clever finish that was easily saved by Cherries goalkeeper Ryan Allsop.
Bottom side Bury lost 2-1 at home to 10-man Colchester, who had George Porter sent off after just four minutes.
Craig Fagan then put Bury ahead 25 minutes into the game but were behind just five minutes later as Michael Smith and Clinton Morrison turned the game in Colchester's favour.
Walsall scored twice in the 90th minute to rescue a point at home to Crawley.
Jamie Paterson and Will Grigg struck late for Walsall after goals from Jamie Proctor and Paul Hayes had looked like being enough for Crawley to take the win.
Cody McDonald scored the only goal as Coventry beat relegation candidates Hartlepool at the Ricoh Arena and a 3-0 defeat at MK Dons saw Tranmere drop out of the play-off places.
Dean Lewington, Stephen Gleeson and Darren Potter gave Karl Robinson a good result at stadium:mk whilst Leyton Orient hammered 10-man Carlisle, running out 4-1 victors at the Matchroom Stadium.
Romain Vincelot and Shaun Batt put the hosts 2-0 ahead before Carlisle goalkeeper Mark Gillespie was dismissed, with Kevin Lisbie scoring the resulting penalty.
Matt Robson grabbed a consolation for the visitors, with Dean Cox adding the fourth for Orient.
Crewe and Shrewsbury took a share of the spoils following a 1-1 draw at Gresty Road with Luke Summerfield equalising Byron Moore's opener whilst Dean Leacock's 81st-minute goal was enough for Notts County to beat Scunthorpe.