The defending champions needed a last-minute goal from Rene Junior to secure maximum points, after throwing away a 3-0 lead in 16 second-half minutes.
Marcelo Lippi's side, chasing a fourth successive crown, remain six points clear of nearest challengers Beijing Guoan with four matches remaining.
There was little sign of the drama to come when the visitors stormed into a commanding lead within 35 minutes.
Alberto Gilardino opened the scoring in the 27th minute, before Elkeson claimed his 23rd and 24th league goals of the season with two quickfire strikes in the next eight minutes.
The home side roared back after the interval, however, with goals from Lu Lin and Jiang Ning setting nerves jangling among the Evergrande camp.
Abderrazak Hamdallah completed the comeback with 10 minutes to spare but, just when it seemed both sides would have to settle for a point, Junior popped up in the final minute to seal a dramatic win for the league leaders.
Guoan managed to keep pace in second place, as Dejan Damjanovic's treble secured a 3-1 victory at Liaoning Whowin.
In the race for the final AFC Champions League qualification slot, Shandong Luneng took advantage of R and F's defeat with a 2-0 home win over Shanghai Shenhua.
Liu Binbin and Aloisio sealed the triumph, with Shandong now three points behind R and F in the race for third, with the pair set to do battle on October 19.
At the wrong end of the table, Harbin Yiteng remain bottom after a 1-0 home defeat at the hands of Dalian Aerbin, while Henan Jianye's third successive draw - 1-1 at Tianjin Teda - sees them move to within two points of safety.
The clash between Guizhou Renhe and Shanghai SIPG also finished 1-1, while the mid-table encounter between Jiangsu Sainty and Changchun Yatai ended 2-0 to the latter - Montenegro international Fatos Beciraj claiming both goals.
Get the best features, fun and footballing frolics straight to your inbox every week.
Thank you for signing up to Four Four Two. You will receive a verification email shortly.
There was a problem. Please refresh the page and try again.