A double from Jimmy Kebe - including a late winner - condemned Sunderland to defeat to Reading.
Kebe struck at either end of the 90 minutes, opening the scoring with a fine finish early on before firing the deciding goal five minutes from time.
Craig Gardner had equalised from the penalty spot just before the half-hour after Pavel Pogrebnyak fouled John O'Shea.
But the Royals had the final say as Kebe headed in late on to seal the points after Sunderland debutant Danny Graham saw a point-blank header saved by Adam Federici.
Boss O'Neill opted for an unchanged team following the draw with Swansea, introducing Graham off the bench in the closing stages.
The Sunderland chief saw his side's afternoon get off to the worst possible start as Reading surged ahead after just seven minutes.
Jobi McAnuff made a good run down the left and pulled the ball back for Kebe, who took a deft touch to open up some space before drilling a left-footed shot high into the net from 12 yards out.
The early goal was exactly what the hosts needed and their confidence was bubbling as they continued to push Sunderland back.
The visiting fans' held their collective breath when a deep free-kick found defender Alex Pearce on the quarter-hour, but the Reading man poked the ball over the bar at the back post via a slight deflection on the way.
The visitors were under the cosh but almost fashioned a leveller just before the 25-minute mark.
Alfred N'Diaye's driving run in from the left wing was matched by the quality of his effort on goal, which was well parried by Federici. Seb Larsson, following up, got to the ball before his marker but the Reading keeper was there against to block bravely.
It was a close call, but the visitors did get themselves on level terms just a couple of minutes later from the penalty spot.
Reading striker Pogrebnyak will have been kicking himself after felling O'Shea with a needless sliding challenge after a Sunderland corner was half-cleared towards the edge of the box.
Gardner, however, didn't need asking twice and beat Federici with a consummately cool penalty, burying the ball perfectly into the bottom corner beyond the keeper's outstretched fingertips.
Restoring parity seemed to settle the visitors, who began to crank up the pressure with Adam Johnson and Stephane Sessegnon pushing and probing in support of Steven Fletcher up front.
And the half ended with excellent saves at either end - starting with Sunderland's Simon Mignolet when he did brilliantly to deny Pogrebnyak.
The big Russian got his head on an inswinging free-kick to head goalwards from six yards out only to see Mignolet showcase his excellent reactions to block.
Then Sessegnon's quicksilver skills bought him a yard of space in the Reading box, but he found Federici in fine form as he sprung left to tip the effort away from danger.
That late flurry gave way to a quieter start to the second half, although Steven Fletcher did test Federici with a deflected drive from the edge of the box.
The hosts won a series of free-kicks in dangerous positions as they built up a head of steam, but only one of those opportunities resulted in a clear-cut chance as an Ian Harte delivery was pushed out by Mignolet.
Kebe swept the loose ball back across the box to create a secondary chance, but the Sunderland defence hurriedly cleared their lines.
Boosted by the introduction of Adam Le Fondre off the bench, Reading continued to push and probe with Sunderland often looking to a lengthier ball as their outlet.
The visitors survived a major scare with a quarter-hour to play - defender Adrian Mariappa heading against the crossbar after he rose highest to meet a corner from the right.
O'Neill rolled the dice as the clock ticked down, introducing Graham off the bench to a huge roar from the 2,100 away fans.
And the big man nearly wrote himself a dream script, meeting a superb delivery with a powerful header which was brilliantly tipped over by Federici.
Titus Bramble nodded off-target at the back post as Sunderland looked to leverage the momentum gained by Graham's arrival.
But the visitors were left to rue the missed opportunities as Reading carved out a winner with just five minutes remaining.
Harte swung a dangerous free-kick to the back post and there was Kebe to head high into the net from inside the six-yard box to register the decider.