Steve Stone bagged the winner as Portsmouth boosted their survival hopes and dented Manchester United's chances of finishing second in the Premiership.
Ole Gunnar Solskjaer saw a shot well saved by Shaka Hislop before Pompey went ahead, Stone firing in after Lomano LuaLua's cross was not cleared.
Yakubu should have twice doubled the lead but he first blazed over then slammed another effort narrowly wide.
United pressed but Paul Scholes and Solskjaer saw goalbound shots blocked.
Both sides started brightly in the Fratton Park sunshine and United striker Louis Saha looked menacing, with his pace a constant threat.
It was the Frenchman who had the first two openings, but he first saw a shot blocked by Dejan Stefanovic then flicked a header over from Nicky Butt's centre after Hislop had flapped at the cross.
36 mins: Stone's fine finish puts Pompey ahead
44 mins: Yakubu blazes over
90 mins: Ronaldo's free-kick flashes wide
United were having to be patient in their build-up, and Scholes played a lovely through ball for Solskjaer who saw his low shot brilliantly saved by Hislop.
Pompey were relying on catching United on the break, and LuaLua wasted a golden chance to run through on goal when he took a heavy touch from Eyal Berkovic's pass.
Portsmouth soon had their first real opportunity and they converted it. LuaLua sent in a cross from the right and Yakubu's touch directed the ball into Stone's path, the midfielder firing into the roof of the net.
Hislop tipped another Saha header over as United sought an equaliser, while John O'Shea struck Gary Neville's cross straight at the Trinidadian.
But United should have been two-down at the interval, Yakubu blazing a volley over after Mikael Silvestre's clearing header fell into his path.
The Nigerian crashed another right-foot shot wide from 15 yards after Alexei Smertin's fine run, Scholes guilty of giving the ball away to the Russian.
As United probed for a way back into the game they looked increasingly vulnerable to the counter-attacking pace of Yakubu and LuaLua.
Eric Djemba-Djemba hit a volley at Hislop before Solskjaer beat the hosts' offside trap only to send his left-foot shot in Hislop's arms from a tight angle.
As United pressed Scholes - who seemed off the pace - had a low drive blocked before Solskjaer's effort was thwarted by a brave De Zeeuw interception.
Cristiano Ronaldo had United's final chance deep into stoppage time, but his free-kick whistled past the post, before Yakubu's left-foot drive was saved by Roy Carroll's legs.
Portsmouth: Hislop, Primus, Stefanovic, De Zeeuw, Stone, Faye,
Smertin, Berkovic (Quashie 45), Taylor, LuaLua (Sheringham 79),
Yakubu. Subs not used: Wapenaar, Curtis, Harper.
Booked: Sheringham, Taylor.
Man Utd: Carroll, Gary Neville, Brown, Silvestre,
O'Shea (Fletcher 74), Butt (Bellion 89), Scholes,
Djemba-Djemba (Ronaldo 58), Giggs, Saha, Solskjaer. Subs not used: Howard, Pugh.
Booked: Gary Neville.
Referee: N Barry (N Lincolnshire).