Reading captain Matt Mills opened the scoring against his former club but goals from James Hayter, Shelton Martis and Dean Shiels looked to have put Sean O'Driscoll's side in control.
But Jem Karacan soon got on the scoresheet and Ian Harte's superb free-kick levelled matters with quarter of an hour left.
Substitute Church then pounced to slot home and keep the Royals in touch with the play-off places.
Brian McDermott's men took the lead in the ninth minute.
Brian Howard was fouled on the edge of the box and when former Leeds man Harte sent in a fantastic free-kick, Mills was able to bundle in his fourth goal of the season from close range.
Shane Long then broke clear of a shaky Doncaster offside trap but after cutting in from wide on the right could only drag his shot into the side netting.
And that miss proved costly when the visitors equalised in the 26th minute.
James Coppinger earned himself a yard of space with a clever turn on the right wing and delivered a superb inswinging cross for Hayter to meet with a bullet header into the top corner.
Doncaster were beginning to settle into their trademark passing game but it was the hosts who had a great chance against the run of play.
Long climbed high to flick a ball on and Jay Tabb found himself in on goal. The midfielder attempted to go round goalkeeper Neil Sullivan but the former Scotland international stood tall and nicked the ball cleanly from his toes.
Again Rovers were clinical in punishing the home side as Martis put them ahead with three minutes of the first half remaining.
Martin Woods delivered a free-kick from wide and Martis got ahead of his marker to head in from close range.
Rovers started the second half in similar fashion as Shiels latched onto a defensive error, cut inside a
challenge and slid the ball past Adam Federici.
But McDermott's side pulled one back on the hour mark when Karacan headed a cross from substitute Noel Hunt in off the base of the post.
Hal Robson-Kanu wasted a great chance to level when he headed another Harte delivery over the top before Harte took matters into his own hands with 16 minutes left.
Brian Stock was adjudged to have handled on the edge of the area and Harte gave Sullivan no chance with a powerful effort which flew into the top corner.
The home pushed on and found the winner with two minutes left.
Substitutes Michail Antonio and Church combined and after beating two men Antonio was able to pick out Church six yards out to deliver a knockout blow.