Reading 0 Tottenham Hotspur 1
Keane's solo strike and Reading's sixth game without a goal leaves the Royals in huge danger of the drop as they head to Derby on the final day of the season needing a result and other games to go their way.
Reading came into their final home game of the season desperate to end a potentially fatal run of form which had seen them go five games without a win - or even a goal.
But if they expected Spurs side to roll over for them and start preparing for their summer holidays, they were horribly mistaken.
Juande Ramos' side have been in indifferent form since lifting the Carling Cup, but looked in a different league from the home side.
Darren Bent, handed a start because of Dimitar Berbatov's groin injury, was denied early on by a smart save by Marcus Hahnemann after Steed Malbranque had sent the striker clear and the French midfielder himself threatened with a cheeky back-heel attempt from Tom Huddlestone's low cross.
But Spurs' early probing was rewarded on 16 minutes when Michael Duberry was caught stepping forward just inside the Reading half and Keane was able to sprint into the space behind him.
Kevin Doyle was unable to stop him and last defender Liam Rosenior slipped, allowing Keane to run through unchallenged and clip a simple finish beyond the reach of Hahnemann.
Eight minutes later, Spurs looked to have gone two up as Malbranque coolly finished after a neat pass from Keane, only for a flag for offside to dubiously rescue Reading.
The decision was a massive let-off for the home side and boss Steve Coppell responded by pushing Doyle further forward in a 4-3-3 formation in a bid to at least threaten Radek Cerny's goal.
It was a fruitless exercise though, as Spurs continued to out-pass and outclass the hapless home side.
Keane was denied by a timely Rosenior block as Ramos' side threatened to double their lead before the break.
The half-time whistle could not come quick enough for Reading, but Coppell's interval teamtalk still didn't seem to breathe life into the strangely lacklustre Royals.
Reading looked to be frozen by fear and should have been further behind as Malbranque side-footed wide of an empty net after Keane's turn and shot across the face of goal.
But with half an hour left, Reading suddenly reacted as they seemed to realise their season was slipping away irretrievably.
Leroy Lita teed Andre Bikey up for a drive which deflected over off Didier Zokora's face - the Cameroon international's final contribution before making way for Marek Matejovsky, who added a much-needed spark to the midfield.
The Czech substitute went close with a side-foot shot that drifted just wide, before Bent almost finished Reading off with a breakaway that ended with the striker smacking a shot against a post.
But Reading finished strongly and finally forced Cerny into a save when Lita set Dave Kitson up for a low shot which was well stopped at the near post.
And Cerny then produced a remarkable save to keep out Rosenior's shot which took a deflection off Jonathan Woodgate and looked to be heading into the top right-hand corner.
A goal then would have kept Reading out of the relegation zone and ensured their fate remained in their own hands.
But defeat means the Royals travel to relegated Derby on the final day of the season needing at least a point - and probably three - to have any hope of survival.