Arsenal were twice denied by the woodwork but their long unbeaten streak continues after they drew 0-0 with Aston Villa at Villa Park.
Cesc Fabregas struck the post in first-half stoppage time and then Tomas Rosicky crashed a shot against the underside of the bar after the break.
Villa played their full part in a pulsating end-to-end affair but failed to add the Gunners to the scalps of the other 'big four' teams they have beaten this season - Manchester United, Liverpool and Chelsea.
It means Arsenal have now gone 12 years since last tasting defeat away to Villa as they extended their unbeaten Premier League run to 10 matches from which they have collected 24 points.
Villa also went close to snatching a winner, with Stewart Downing spurning two opportunities, but O'Neill will be slightly concerned they have now failed to score in four successive league games.
Fabregas had been Villa's two-goal destroyer in the Christmas clash at the Emirates Stadium and he turned in another classy performance while Andrey Arshavin was always a threat to the Villa rearguard.
Villa skipper Stiliyan Petrov defied an Achilles problem to produce a sterling display in the middle of the park.
Arsenal goalkeeper Manuel Almunia was called into action to prevent Gabriel Agbonlahor from giving Villa a fourth-minute lead.
Emile Heskey played in Villa's 10-goal leading scorer and his low cross-shot contained plenty of power and was tipped around the post by Almunia.
Heskey was again prominent in finding the overlapping Petrov in space down the left and his deft centre was only just too high for Agbonlahor.
Arsenal responded and Villa defender Richard Dunne deflected a shot from Eduardo for a corner.
Villa goalkeeper Brad Friedel then went down to his right to parry away a dipping drive from the edge of the box by Denilson.
Heskey was posing plenty of problems and Arsenal defender Thomas Vermaelen was yellow-carded after bringing down the England striker 25 yards out.
It was a situation tailor-made for the dead-ball skills of Ashley Young and he curled his free-kick only a couple of feet wide with Almunia rooted to his line.
Downing squandered a good chance to break the deadlock in the 32nd minute after Ashley Young had shaken off the challenge of Gael Clichy.
His cross to the back post dropped invitingly for the former Middlesbrough player but he could not keep his shot down.
Arsenal boss Arsene Wenger was forced to make a substitution after 35 minutes with Vermaelen limping out of the action and replaced by Sol Campbell.
In first-half stoppage time Fabregas came close to breaking the deadlock when his shot flew across the body of Friedel but struck the far post and rebounded to safety.
Arsenal began the second half on the offensive and Friedel did well to block a shot from Fabregas.
But Downing should have done better for Villa when he headed wide from two yards out from a deep centre by Ashley Young before Heskey was cautioned for bringing down Fabregas.
Arsenal suffered a setback just after the hour mark when Eduardo limped off with what appeared to be a hamstring injury and was replaced by Nicklas Bendtner.
The Gunners were now looking the more likely to open the scoring and twice in the space of a few seconds nearly went ahead.
Arshavin showed his class with a run into the Villa box which forced a good block out of Friedel.
The rebound came out to Rosicky and his shot cannoned against the underside of the bar but did not cross the line.
Heskey was replaced after 77 minutes by promising youngster Fabian Delph and then Rosicky made way for Samir Nasri.
Clichy was yellow-carded with six minutes remaining for a challenge on Downing but there was no more significant goalmouth action as the game ended goalless.