The Toffees stopper denied Kevin De Bruyne in the first half before also saving from sub Sergio Aguero in the second period.
Romelu Lukaku blasted home a super opener to give Everton hopes of victory but another of City's subs, Nolito, headed the leveller 20 minutes from full-time.
Everton started brightly but City soon found their rhythm with the returning De Bruyne combining well with David Silva and Raheem Sterling.
The home side saw their first penalty appeal of the afternoon waved away when Leroy Sane went down under a challenge from Bryan Oviedo on 11 minutes.
Despite dominating possession, City were struggling to break down the visitors. They were given a great chance to go ahead when Silva's trickery drew a foul from Phil Jagielka on 42 minutes.
Stekelenburg however dived to his left and pushed away the resulting spot-kick from De Bruyne.
Five minutes after the break it was Everton's turn to threaten, Gerard Deulofeu drawing a decent stop from Claudio Bravo.
Aguero was summoned from the bench to replace the ineffective Kelechi Iheanacho just before the hour but his side were soon a goal down.
Yannick Bolasie flicked on a long clearance and Lukaku's power took him by Gael Clichy before he powered a shot across Bravo into the net.
Jagielka handed City their second spot kick with a rash challenge on Aguero on 70 minutes but, incredibly, Stekelenburg repeated his heroics to deny the Argentine.
Nolito replaced Sane immediately after the penalty save and, within a minute, he levelled.
David Silva's cross from the left was headed back across goal into the corner with Stekelenburg, for once, unable to intervene.
Try as City did, they couldn't find an elusive winner despite Pep Guardiola throwing on Vincent Kompany as an auxiliary centre forward in the closing stages.