Sunderland grabbed the lead in the 12th minute with a ferocious low strike from Bardsley from 30 yards. Everton may have been expecting a cross as Jack Colback prepared to take a free-kick on the right but he played short to Bardsley and the defender fired through a crowded penalty area.
The hosts tried to produce a quick response and got their equaliser as Leighton Baines delivered a dangerous cross from the left. Nikica Jelavic’s misdirected his header but Cahill followed up with one of his own to beat Simon Mignolet.
Jelavic threatened another as he raced onto a long ball from deep but could only screw a shot wide under pressure from Wayne Bridge. Sylvain Distin had a better chance after Cahill tested Mignolet with another header which the keeper could only punch off the line. The ball fell invitingly for Distin but Sunderland escaped as the defender blasted wide from close range.
Everton continued to take the attack to the visitors in the second half, although Sunderland’s Nicklas Bendtner found the net after being played through by James McClean but he was flagged offside.
Jelavic won a header as Baines whipped in a free-kick but his effort flew over and the Croatian had a penalty shout turned down after heading against John O’Shea’s arm.
Sunderland attempted to take the edge out of the game as time ran down but Everton finished strongly. Mignolet produced a fine double save to prevent the Toffees snatching a winner four minutes from time. Heitinga’s header had the keeper at full stretch, and Jelavic pounced on the rebound but Mignolet recovered to block as Sunderland held on.