On-loan striker Lauri Dalla Valle put Crewe Alexandra on their way to an impressive away win over Doncaster.
The young on-loan Fulham forward latched on to Chuks Aneke's through ball before firing the Alex in front.
Doncaster had plenty of chances to level throughout the game and Iain Hume missed a great opportunity, before Paul Keegan hit the bar.
And Crewe ended Rovers' seven-match unbeaten run when Mathias Pogba headed in Michael West's corner.
VIEW FROM THE DRESSING ROOM
Doncaster Rovers manager Dean Saunders told BBC Radio Sheffield:
"We've missed too many chances - we've had five chances and missed them all.
"Iain Hume has gone through right on half-time after us conceding a real elementary goal.
"Paul Keegan's missed an open goal, then Billy Paynter's had a good chance at the end.
"it's just not gone for us tonight, but we've had a brilliant run."
Live Text Commentary
Full Time The final whistle is blown by the referee.90:00 +2:45
The official flags Paul Keegan offside. Indirect free kick taken by Alan Martin.90:00 +0:58
Billy Paynter takes a shot. Fantastic save by Alan Martin.90:00 +0:09 Substitution
Substitution Gregor Robertson joins the action as a substitute, replacing Chuks Aneke.88:45
The referee blows for offside against Michael West. Gary Woods takes the indirect free kick.86:19
Iain Hume takes a shot. Save by Alan Martin. Corner taken by Iain Hume from the right by-line, clearance by Chuks Aneke.83:34
Tommy Spurr concedes a free kick for a foul on Lauri Dalla Valle. Luke Murphy sends in a cross, Kelvin Mellor takes a shot. Save by Gary Woods.82:20
Free kick awarded for a foul by Kelvin Mellor on James Husband. The free kick is swung in right-footed by Robbie Blake, Luke Murphy makes a clearance. Shelton Martis is caught offside. Alan Martin takes the indirect free kick.81:28
Luke Murphy crosses the ball from the free kick right-footed from right channel, save made by Gary Woods.81:28 Booking
Booking Paul Keegan is shown a yellow card for unsporting behaviour.81:17
Foul by Paul Keegan on Luke Murphy, free kick awarded.80:07
Free kick awarded for an unfair challenge on Matt Tootle by Iain Hume. Free kick crossed right-footed by Luke Murphy, clearance made by Tommy Spurr.77:31
Free kick awarded for a foul by Mathias Pogba on James Husband. Indirect free kick taken by Gary Woods.77:00
The official flags Billy Paynter offside. Alan Martin takes the free kick.76:39
The ball is crossed by Chris Brown, Mark Ellis makes a clearance.76:02
Outswinging corner taken right-footed by Paul Keegan, Mathias Pogba manages to make a clearance.75:29
Lauri Dalla Valle is flagged offside by the assistant referee. Indirect free kick taken by Gary Woods.74:36 Substitution
Substitution (Doncaster) makes a substitution, with Chris Brown coming on for James Harper.70:51
The assist for the goal came from Michael West.70:51 Goal scored
Goal! - Mathias Pogba - Doncaster 0 - 2 Crewe Mathias Pogba grabs a headed goal from close in. Doncaster 0-2 Crewe.
Corner taken right-footed by Michael West,69:16
Lauri Dalla Valle fouled by Shelton Martis, the ref awards a free kick. Free kick taken by Harry Davis.68:47
Abdul Osman takes a shot. Save by Gary Woods.67:20
Indirect free kick taken by Harry Davis.67:20 Booking
Booking Paul Quinn is shown a yellow card.66:46
Paul Quinn concedes a free kick for a foul on Chuks Aneke.65:25
The free kick is delivered left-footed by Luke Murphy from left wing. Kelvin Mellor is caught offside. Gary Woods takes the free kick.65:25 Booking
Booking The referee shows Iain Hume a yellow card for unsporting behaviour.65:13
Free kick awarded for an unfair challenge on Matt Tootle by Iain Hume.63:57
Billy Paynter challenges Mark Ellis unfairly and gives away a free kick. Harry Davis restarts play with the free kick.62:20
Paul Keegan concedes a free kick for a foul on Abdul Osman. Alan Martin restarts play with the free kick.61:15
Robbie Blake takes a shot from 18 yards. Save by Alan Martin.59:49
Luke Murphy takes the free kick.59:49 Booking
Booking James Harper receives a caution for unsporting behaviour.59:42
James Harper gives away a free kick for an unfair challenge on Chuks Aneke.57:42
Paul Keegan takes a shot.54:47
Michael West has an effort at goal from outside the penalty box missing to the wide right of the target.52:41
Matt Tootle fouled by Iain Hume, the ref awards a free kick. Indirect free kick taken by Harry Davis.52:09
Chuks Aneke takes a shot. Save made by Gary Woods.51:31
Free kick awarded for a foul by Paul Quinn on Chuks Aneke. The free kick is swung in right-footed by Luke Murphy, Paul Quinn manages to make a clearance.49:59
Outswinging corner taken from the right by-line by Michael West. Corner taken by Michael West from the left by-line to the near post, save by Gary Woods.49:29
The referee blows for offside. Indirect free kick taken by Alan Martin.45:01
The game restarts for the second half.45:01 Substitution
Substitution (Crewe) makes a substitution, with Michael West coming on for Byron Moore.45:01 Substitution
Substitution David Syers goes off and Robbie Blake comes on.45:00 +4:07 Half time
Half Time The ref blows to signal half-time.45:00 +3:12
Effort on goal by Iain Hume from inside the box misses to the right of the target.42:42
Tommy Spurr takes the free kick.42:42 Booking
Booking Abdul Osman goes into the referee's book.42:38
Abdul Osman challenges Billy Paynter unfairly and gives away a free kick.39:36 Booking
Booking The referee cautions David Syers for unsporting behaviour.37:02
Curled right-footed shot by Byron Moore. Save by Gary Woods.34:54
Iain Hume concedes a free kick for a foul on Harry Davis. Alan Martin restarts play with the free kick.32:10
Outswinging corner taken right-footed by Paul Keegan, Shot from deep inside the area by Martin Woods clears the bar.29:32
Unfair challenge on Chuks Aneke by James Harper results in a free kick. Free kick crossed by Luke Murphy, free kick awarded for an unfair challenge on Gary Woods by Mark Ellis. Free kick taken by Gary Woods.28:24
Foul by James Harper on Abdul Osman, free kick awarded. The ball is delivered by Luke Murphy, Kelvin Mellor takes a shot. Save made by Gary Woods.27:26
Abdul Osman takes a shot. Save by Gary Woods. Outswinging corner taken right-footed by Matt Tootle from the right by-line.26:10 Substitution
Substitution Rob Jones goes off and Shelton Martis comes on.22:10
Corner taken by Paul Keegan from the right by-line, clearance made by Abdul Osman.21:13
Chuks Aneke gives away a free kick for an unfair challenge on Martin Woods. Indirect free kick taken by Gary Woods.14:30
Kelvin Mellor sends in a cross, save by Gary Woods.12:13
Luke Murphy challenges Iain Hume unfairly and gives away a free kick. Free kick taken by James Husband.11:29
Harry Davis fouled by Iain Hume, the ref awards a free kick. Indirect free kick taken by Alan Martin.8:38
Martin Woods concedes a free kick for a foul on Kelvin Mellor. Indirect free kick taken by Kelvin Mellor.7:31
The assistant referee flags for offside against Iain Hume. Free kick taken by Mark Ellis.4:33
Assist on the goal came from Chuks Aneke.4:33 Goal scored
Goal! - Lauri Dalla Valle - Doncaster 0 - 1 Crewe A goal is scored by Lauri Dalla Valle from deep inside the penalty area to the bottom right corner of the goal. Doncaster 0-1 Crewe.2:53
Abdul Osman handles the ball and concedes a free kick. Tommy Spurr restarts play with the free kick.0:59
Effort from inside the area by Iain Hume misses to the left of the target.0:00
The game gets underway.
Live data and text provided by our data suppliers