Everton 1 Portsmouth 0

Everton substitute Diniyar Bilyaletdinov's last-gasp effort consigned already-relegated Portsmouth to a heartbreaking 1-0 defeat at Goodison Park.

Pompey have long been Championship-bound, but could have ended with all three points had Anthony Vanden Borre's second-half effort not been controversially disallowed for offside.

Instead they left Merseyside with nothing as Everton snatched an unlikely win four minutes into stoppage time when Russian Bilyaletdinov lashed home from the edge of the box.

Portsmouth boss Avram Grant opted to rest England hopeful David James with a view to next weekend's FA Cup final but his replacement Jamie Ashdown was barely tested at all.

Tony Hibbert had an early sight at goal after two minutes only for defender Ricardo Rocha to make a crucial block before striker Louis Saha headed narrowly over a minute later.

Pompey striker Frederic Piquionne almost fired the visitors ahead in the 24th minute after a slip from Tim Howard but the American keeper recovered well to deny the Frenchman.

Jamie O'Hara came on at half-time in place of Northern Ireland midfielder Marc Wilson and had an immediate impact as Portsmouth thought they had taken the lead in the 63rd minute.

Belgian defender Vanden Borre pounced on a loose ball in the Everton box and, with former Pompey defender Sylvain Distin seeming playing him onside, slotted past Howard.

However, the officials had other ideas as Everton boss David Moyes began to throw men forward in search of a final day of the season winner.

It didn't look like coming after Portuguese defender Rocha denied Leon Osman and then England hopeful Leighton Baines as the clock ticked past 80 minutes.

But it finally did with Bilyaletdinov - brought on for Victor Anichebe in the 66th minute - finding himself in the right place at the right time at the death as Everton finished eighth with 61 points.