Forest extended their unbeaten run to eight games in League One but could not find a way past veteran keeper Neil Sullivan.
Doncaster had the ball in the net in the first half but it didn't count. James O'Connor chipped in a ball over the defence but, as James Hayter slid in and diverted it beyond Paul Smith, the flag was up for offside.
It was James Coppinger though who had the two other first-half chances for the visitors. Early on he ran at Kelvin Wilson but fired into the side-netting and before the break turned Neil Lennon well but, from 25 yards, curled his shot just over the bar.
But it was Forest that had all the possession without turning it into real chances. While Luke Chambers looked a danger from corners, in open play they failed to work Sullivan.
Forest's only first-half chances came when Junior Agogo met a long ball from Julian Bennett before seeing his shot deflected wide while Sullivan had to save a Chambers header.
But Forest's best chance came just before the break. A well-worked corner from the right between Kris Commons and Chris Cohen saw Cohen cut onto his left foot and fire in a low shot that, despite Nathan Tyson's cheeky flick from close range, Sullivan saved.
The Doncaster goalkeeper made further saves in the second period, getting down to save Commons' low drive before Paul Smith did the same at the opposite end to deny Richie Wellens.
But Doncaster almost broke the deadlock when Mark Wilson struck a 20-yard shot that beat Smith but came back off the bar and James Hayter failed to score as he followed in.
It injected a fresh wave of attacks from Forest as substitute Grant Holt met Commons' cross at the back post only to see Sullivan tip over the bar.
Then from the corner the ball came into the six-yard box but Chambers, running onto it, somehow failed to put the ball over the line.
Holt had a superb chance to win it with two minutes left, finding himself free to meet Commons' free-kick into the box, but he failed to connect and it ran out for a goal kick before Agogo, unmarked, met Cohen's corner in injury time but headed wide.