Fernandinho’s 90th minute own goal cost Manchester City three points at Etihad as the goal enables Crystal Palace to get undeserved 2-2 draw.
On-loan Everton striker Cenk Tosun headed a 39th-minute opener for the visitors, who looked like holding out for three points until Aguero slid home Gabriel Jesus' 82nd-minute cross.
That was Aguero's 250th goal in City colours and his pinpoint header from Benjamin Mendy's cross five minutes later seemingly settled the issue.
Kevin De Bruyne was to the fore as City pushed Palace back during the opening stages and he struck a sumptuous free-kick against the underside of the crossbar in the 14th minute.
Zaha was arguably unfortunate to have a penalty appeal rejected when he went down under Stones' 17th-minute challenge, but Palace were celebrating when Gary Cahill nodded James McCarthy's corner back across goal for an unmarked Tosun to head home.
Vicente Guaita denied Bernardo Silva either side of the interval, although a cute Palace break saw his opposite number Ederson forced to deny Tosun a second.
Aguero was ready to strike from the penalty spot inside the final 20 minutes, but referee Graham Scott overturned his handball verdict against Jairo Riedewald after a VAR review.
City's all-time record score duly took matters into his own hands by getting on the end of an excellent delivery from substitute Jesus, and his header from Mendy's centre sent the home supporters into raptures.
However, Zaha prayed on the defensive frailties the hosts have exhibited for much of the season, with Fernandinho erring under pressure from Palace substitute Connor Wickham.
Signup for FREE news updates, latest information and hottest gists everyday/Advertise on NigerianEye.com