FA Premiership/Charlton Athletic 2 Portsmouth 1: Portsmouth's survival hopes were dented at The Valley as Charlton staged a late comeback to snatch victory with goals from Bryan Hughes and Darren Bent.
The visiting side had appeared to be coasting to a victory that would have pulled them further away from the relegation zone after Andres D'Alessandro's stunning first-half strike. Charlton had offered very little in attack until Bent picked out Hughes for the equaliser after 76 minutes.
Suddenly the tables were turned and after Darren Ambrose had been denied by a last-ditch challenge, Bent rifled home his 21st goal of the season.
All is not lost for Portsmouth, but their six-game unbeaten run is over and manager Harry Redknapp will be frustrated after they allowed victory to slip from their grasp.
In a poor game, Portsmouth were the better side until Charlton conjured up their equaliser.
They set the early tempo, testing a reshuffled Charlton defence with Benjani Mwaruwari an unpredictable but effective presence up front.
Mwaruwari burst into the Charlton box and defender Gonzalo Sorondo was forced to make a smart challenge as Richard Hughes threatened down the right.
Charlton survived three consecutive Portsmouth corners as Thomas Myhre tipped Gary O'Neil's cross over the bar and Mwaruwari could not find space to turn and shoot.
Charlton worked just one opening in the first half when Bryan Hughes's long-range shot was blocked and Matt Holland scuffed the rebound.
All Portsmouth's pressure eventually paid off when D'Allesandro fired them into the lead with a spectacular effort five minutes before the interval.
The Argentina playmaker cut in from the right touch-line and unleashed a curling shot which left Myhre stranded as it flew into the top corner.
Charlton upped a gear in the second half and snatched an equaliser 16 minutes from time. Ambrose slid a pass through to Bent in the Portsmouth box and the England striker crossed for Hughes to apply the simple finish.
Herman Hreidarsson's header set up the winner for Bent, who latched onto the flick-on and rifled his shot past Dean Kiely.
CHARLTON ATHLETIC: Myhre, Spector (Sankofa 38), Sorondo, Hreidarsson, Powell, Kishishev, Holland, Hughes, Thomas (Ambrose 45), Marcus Bent (Bothroyd 25), Darren Bent. Subs not used: Andersen, Euell. Booked: Darren Bent. Goals: Hughes 76, Darren Bent 83.
PORTSMOUTH: Kiely, Priske, Primus, Pamarot, Taylor, O'Neil, Davis, Hughes (Routledge 84), D'Alessandro, Todorov (Karadas 78), Mwaruwari. Subs not used: Ashdown, Koroman. Booked: Karadas. Goal: D'Alessandro 40.
Referee: H Webb (S Yorkshire).