David Moyes' men were on the back foot for the majority of the game following Marvin Sordell's equaliser but showed their class with a winner in the dying moments
The visitors opened the scoring in fortunate circumstances, as the ball ricocheted in off Steven Pienaar, but were dragged level when Marvin Sordell finished well at the front post moments later.
Both teams pushed for a winner in the second half, but substitute Heitinga had the last laugh as he crashed the ball home from the edge of the box.
The hosts made four changes from last week’s 0-0 draw with Crystal Palace, as Andy Lonergan, Sam Ricketts, Josh Vela and Sordell were handed chances to impress. David Moyes, meanwhile, made just one switch, with the fit-again Kevin Mirallas replacing the out-of-form Steven Naismith.
Perhaps understandably given their largely unchanged team, the Toffees started the brightest. Pienaar should arguably have given them the lead with just seconds on the clock after making contact with a Nikica Jelavic cross from the right, but he could only divert the ball to the back post with his head.
The visitors continued to dominate, but were forced to deal with the not insignificant blow of losing Mirallas to what appeared to be a recurrence of his hamstring problem just 15 minutes in. However, their luck had clearly improved seconds later, as the ball bounced up off Zat Knight onto the chest of Pienaar to allow the South African to score a goal he knew nothing about.
That goal should have solidified the Blues’ status as the dominant force in the match, but they were soon to find themselves on the back foot. Bolton pieced together a fine passing move to allow Darren Pratley to find space on the right and the midfielder’s pin-point cross gave Sordell all the time he needed to side-foot home.
Pratley was at the centre of things yet again moments later, as his long-range effort stung the palms of Tim Howard before Everton did enough to clear. And the midfielder hadn’t finished there, as his dispossession of Leon Osman led to a chance which Marcos Alonso was unfortunate to see parried away.
The hosts continued to push for the lead prior to half-time but were kept at bay by some staunch defending from the Everton back line.
Despite the break in play, Dougie Freedman’s team came out for the second half with familiar vigour as Alonso again tested Howard from long range. But, with their manager’s words clearly ringing in their ears, Everton produced a much-improved performance to make the contest a more even one after the break.
Subsequently, the Toffees’ best chance prior to the hour mark fell to Jelavic after a fine through ball, but the Croatian’s touch was heavy and allowed Lonergan to clear.
That sloppiness largely summed up the remaining half hour but Everton showed their top-flight quality as Heitinga pounced on a poor clearance to emphatically put his side in the next round.