Steve Cotterill's men were the superior team early on in the first half, keeping the ball and passing it about with confidence. Pompey should have taken the lead after Nugent's shot hit the post and the ball bounced for Lawrence to tap it in but instead he blazed it over.
Lawrence also did well to test Boro 'keeper Steele with a free kick that he curled around the wall. Pompey continued to press forward and the home fans were getting frustrated with their team's lack of possession and chances created.
However, the referee handed Boro the chance to take the lead after awarding them a soft free kick but Ashdown turned Scott McDonald's effort around the post.
Ashdown would pick the ball out of his net moments later though as the ball arrived at Matt Bates' feet from the resulting corner and he struck it through a crowd of players for only his second career goal.
To make matters worse, Boro doubled their lead just before the break after Ward clipped McDonald in the box. Pompey fans protested as it looked like a harsh decision from our end but replays showed that Ward clearly fouled the striker.
Barry Robson powered the spot kick past Ashdown as the travelling fans wondered how on earth Pompey went into half-time 2-0 down having been the better team.
It was a different story at the start of the second half as Pompey were grateful to see Kris Boyd drag his shot wide when through on goal, and this wasn't long after he had headed straight at Ashdown when he looked nailed on to score.
Gordon Strachan's men were made to pay for their profligacy as Nugent gave Pompey a lifeline after heading in Lawrence's cross.
Steve Cotterill then took off Ward for Kanu to give the side a more adventurous look. This opened up the game and Ashdown was soon called into action again to stop Boyd's thunderous drive and he also did well to save McDonald's fierce shot.
Just as it seemed that the visiting fans would be in for a long and painful journey home, Pompey were awarded a penalty as it all kicked off.
Aaron Mokoena was left floored by Robson in the box as Boro looked to attack only for the referee's assistant to call over Neil Swarbrick. Swarbrick then showed Robson a red card and awarded Pompey a penalty, which was met with furious reactions from the Boro players.
Liam Lawrence slammed home the spot kick to equalise in the 88th minute and may even have won the game for Pompey but his stoppage time shot was gathered by Steele.
Pompey fans aimed the "you're getting sacked in the morning" chants at Strachan as Middlesbrough fans booed their team off.
It was a great comeback from Portsmouth and shows what some confidence can do for you, as we would have lost this game two weeks ago. If we had lost this game it would have been an injustice.
But it seems like we have turned a corner now because the side have gelled and are settled. There will still be questions raised about our defence and the fact that we'll struggle when our miniscule squad is stretched to the limit, god help us if Lawrence or Rocha get injured for example.
We look like a solid unit now, though, and we can look up the table rather than over our shoulders.
Pompey Player Ratings
Jamie Ashdown: 8 - Some great saves kept Pompey in it.
Joel Ward: 6 - OK going forward but still suspect defensively.
Ricardo Rocha: 7 - Did well.
Aaron Mokoena: 7 - Solid enough.
Carl Dickinson: 7 - Made some good challenges.
Liam Lawrence: 8 - Assisted one and scored one, already looks like Pompey's player of the season.
Hayden Mullins: 6 - Average showing.
Michael Brown: 6 - No frills performance.
John Utaka: 7 - Gave Boro defence problems.
David Nugent: 7 - Worked hard and got a goal.
Dave Kitson: 6 - Not as imposing as in previous games.
Ibrahima Sonko (Rocha 83): N/A - Brought on for extra aerial threat in search for equaliser.
Kanu (Ward 69): 7 - Made an impact as Boro defence struggled to contain him.