Manchester United 0 Portsmouth 1
Sulley Muntari entered Portsmouth folklore by securing a famous victory at Old Trafford and a place in the FA Cup semi-final at Wembley.
The Ghana midfielder ended United’s dream of winning the treble for the first time in nine years.
Muntari’s spot-kick 13 minutes from time proved decisive and ended years of hurt at the ground for Portsmouth.
The last time Pompey won here was in 1957, and they have endured seven successive defeats the last one as late as January.
United will wonder how they lost this match which they finished with 10 men, after replacement goalkeeper Tomasz Kuszczak was sent off for bringing down substitute Milan Baros.
They dominated possession and almost went ahead in the fifth minute when Paul Scholes got on the end of a free-kick from Nani only to head wide at the near post.
Cristiano Ronaldo thought he had won a penalty a minute later when he was bundled over by Sylvain Distin, but referee Martin Atkinson allowed play to continue.
Portsmouth were keeping a close eye on Ronaldo, and Papa Bouba Diop was booked for dragging his opponent back in the 10th minute.
The visitors broke out of their slumber six minutes later, and Niko Kranjcar tested goalkeeper Edwin van der Sar from distance.
United almost took the lead in the 19th minute when Carlos Tevez got clear, after Wayne Rooney latched on to a pass from Wes Brown.
But the Argentinian striker saw his effort superbly cleared off the line by Glen Johnson.
United kept up the pressure, and Scholes turned quickly in the 28th minute but saw his effort blocked by Portsmouth captain Sol Campbell.
Tevez worked an opening for himself four minutes later and fired in a shot that David James did well to parry.
Lassana Diarra was then booked for a challenge on Ronaldo as United maintained the momentum.
Nani tried to pick out Rooney, but Distin was alert to the danger and made a timely interception in the 41st minute.
Distin again stood tall in the 44th minute to head the ball to safety following a fine cross from Patrice Evra.
United boss Sir Alex Ferguson made a surprise switch at half-time, with Kuszczak replacing van der Sar between the posts.
There was a scare for Portsmouth in the 49th minute when David James flapped at a cross from Tevez. But he recovered in time to prevent Nani getting in a shot.
Nani was coming more into the game and sent a powerful effort into the goalkeeper’s body two minutes later, after being released by Rooney.
Then Rooney was wasteful after Ronaldo had picked him out – sending a shot high into the crowd.
With Kanu out of luck, Portsmouth boss Harry Redknapp replaced him with Baros after 55 minutes.
United almost went in front three minutes later when Nemanja Vidic powered in a header from Nani’s corner.
But Tevez made an accidental block, and Ronaldo fired his effort wide after the ball had been only partially cleared.
Play switched back down the other end, and Baros got away from Owen Hargreaves in the 61st minute but was adjudged to have strayed offside.
Substitute Michael Carrick should have put United ahead in the 69th minute when he got away from James – but just as he was about to score, Distin made a vital block.
United came within inches of taking the lead in the 73rd minute when Evra’s shot came back off the post.
A minute later, Campbell headed away a cross from Nani as Portsmouth again found themselves on the back foot.
But the game took a dramatic turn in the 77th minute when Portsmouth were awarded a penalty after Kuszczak tripped Baros, who had been released by Kranjcar.
The Polish goalkeeper was sent off, and Rio Ferdinand therefore had to take his place between the posts.
But the defender was given no chance with Muntari’s cool spot-kick, which saw Portsmouth secure an unlikely victory.