The result means that Man City stay fourth in the Premier League table - level on points with third-placed Liverpool - while Middlesbrough stay 19th and now six points from the safety of 17th position.
After a nervy start, it was Middlesbrough that created the first chance of the match in the 13th minute, but Alvaro Negredo could only fire wide of the post after Man City had failed to deal with a corner from Stewart Downing.
Man City's best chance of the first period fell to Jesus Navas inside the Middlesbrough box, but the Spaniard could only head wide of the post as the home side survived a dangerous moment.
Less than one minute later, however, the home side made the breakthrough, with Negredo collecting a Downing cross just outside Man City's box before finding the back of the net off the inside of the post.
Raheem Sterling might have equalised for Man City in the 52nd minute after dancing into the Middlesbrough box, but his close-range effort was blocked, before Kevin De Bruyne brought a smart save from Brad Guzan seven minutes later.
Man City were level in the 69th minute, however, when Aguero converted from the penalty spot after Leroy Sane went down inside the Middlesbrough box, although the awarding of the spot kick was extremely controversial.
The home side regained the lead in the 77th minute though, with Chambers stabbing home from close range after some desperate defending from Man City had seen Vincent Kompany kick fresh air, moments after Caballero had fumbled a Downing free kick.
Middlesbrough just could not keep Man City out down the other end, however, and the visitors levelled the scores in the 85th minute when the returning Jesus headed a super Aguero cross into the bottom corner from close range.
It was Man City that pressed for a winner in the six minutes of added time at the end of the 90, but 2-2 was how it finished as Boro earned a welcome point on home soil.