Febian Brandy hit his fifth goal in eight games as in-form Walsall maintained their hot streak with victory at promotion-chasing Doncaster.

Walsall were a goal up inside 72 seconds, skipper Andy Butler heading home from close range.

Rovers levelled in the 16th minute when Billy Paynter fired home his eighth goal of the season.

But Brandy struck nine minutes from time to keep the Saddlers in contention for the League One play-offs.

Walsall, who have now won six of their last seven games, remain within four points off the play-off pack.

Doncaster missed their chance to go top, leaders Tranmere Rovers having been beaten by the same 2-1 scoreline at Leyton Orient.

VIEW FROM THE DRESSING ROOM

Doncaster Rovers manager Brian Flynn told BBC Radio Sheffield:

"Last week's events at Bury... I thought that was a one off game for us.

"Unfortunately it wasn't. I spotted some danger signals and they have to be dealt with immediately.

"Now the most important thing is the word 'galvanise', that's what we have to do now.

"We have to get back to doing the right things."

Match Stats

Shots

10 13

On target

4 7

Corners

8 6

Fouls

14 17

Live Text Commentary

90:00 +4:02 Full time

Full Time The match has reached full-time.

90:00 +2:53

Craig Westcarr is penalised for handball and concedes a free kick. Gary Woods takes the direct free kick.

90:00 +1:55

Shot on goal by Nicky Featherstone from inside the box goes harmlessly over the target.

88:00

Craig Westcarr takes the free kick.

88:00 Substitution

Substitution Nicky Featherstone is brought on as a substitute for Febian Brandy.

88:00

Free kick taken by Craig Westcarr. Foul by David Cotterill on Febian Brandy, free kick awarded.

88:00 Booking

Booking Lee Fowler is cautioned.

87:56

Free kick awarded for a foul by Lee Fowler on Febian Brandy.

84:42

Short corner taken by Jamie Paterson, Andy Taylor takes a shot. Blocked by Chris Brown. Outswinging corner taken by Jamie Paterson, David Cotterill manages to make a clearance. Andy Taylor has an effort at goal from deep inside the area missing to the right of the target.

82:41

Febian Brandy challenges David Cotterill unfairly and gives away a free kick. David Cotterill crosses the ball, Chris Brown takes a shot. Ian McLoughlin makes a save. Corner taken by David Cotterill.

80:48 Goal scored

Goal! - Febian Brandy - Doncaster 1 - 2 Walsall Febian Brandy scores a goal from inside the area to the bottom right corner of the goal. Doncaster 1-2 Walsall.

78:32

Jamie Paterson takes a shot. Save by Gary Woods.

74:39 Substitution

Substitution Billy Paynter goes off and Kyle Bennett comes on.

74:39

Adam Chambers concedes a free kick for a foul on James Harper. James Harper restarts play with the free kick. Corner taken by David Cotterill from the right by-line, clearance made by Andy Butler.

73:53

Jamie McCombe concedes a free kick for a foul on Will Grigg. Free kick taken by Jamie Paterson.

72:31

Sam Mantom takes a shot. Save by Gary Woods. Inswinging corner taken from the left by-line by Sam Mantom, James Harper manages to make a clearance.

71:54

Free kick awarded for an unfair challenge on James Chambers by Chris Brown. James Chambers takes the direct free kick.

70:34

Shot by David Cotterill from outside the area goes high over the crossbar.

68:54

Craig Westcarr takes a shot. Save by Gary Woods. Outswinging corner taken right-footed by Sam Mantom from the left by-line, free kick awarded for a foul by Andy Butler on Rob Jones. Free kick taken by Gary Woods.

66:49

Jamie Paterson takes a short corner. Sam Mantom takes a shot from 20 yards. Gary Woods makes a save.

66:49 Substitution

Substitution (Walsall) makes a substitution, with Craig Westcarr coming on for James Baxendale.

66:49

James Coppinger has an effort at goal. Rob Jones has a header from inside the six-yard box and clears the crossbar.

66:28

Adam Chambers challenges James Coppinger unfairly and gives away a free kick. Lee Fowler takes the direct free kick.

64:42 Substitution

Substitution Lee Fowler on for Paul Keegan.

64:42

Chris Brown produces a headed effort from deep inside the six-yard box which goes wide of the right-hand upright.

63:15

Andy Taylor takes the inswinging corner, save by Gary Woods.

60:54

Rob Jones takes a shot. Save by Ian McLoughlin. Corner taken right-footed by David Cotterill from the left by-line, Andy Butler manages to make a clearance. Short corner taken by David Cotterill.

60:20

Foul by Will Grigg on Rob Jones, free kick awarded. Tommy Spurr takes the free kick.

55:08

Jamie Paterson concedes a free kick for a foul on James Harper. Jamie McCombe restarts play with the free kick.

53:54

Sam Mantom concedes a free kick for a foul on David Cotterill. The free kick is swung in left-footed by David Cotterill, Andy Butler makes a clearance.

52:28

The assistant referee signals for offside against Will Grigg. Free kick taken by Gary Woods.

51:20

Chris Brown fouled by Febian Brandy, the ref awards a free kick. Tommy Spurr restarts play with the free kick.

49:50

Unfair challenge on Febian Brandy by David Cotterill results in a free kick. Direct free kick taken by Paul Downing.

48:35

Foul by James Chambers on David Cotterill, free kick awarded. The ball is swung over by David Cotterill, Chris Brown takes a shot. Ian McLoughlin makes a comfortable save.

45:46

James Baxendale has an effort at goal from deep inside the area missing to the right of the target.

45:01

The match restarts for the second half.

45:00 +2:08 Half time

Half Time The referee calls an end to the first half.

45:00 +0:24

James Baxendale concedes a free kick for a foul on Tommy Spurr. Gary Woods takes the free kick.

44:15

Free kick awarded for an unfair challenge on Andy Butler by Billy Paynter. Ian McLoughlin takes the direct free kick.

42:59

Foul by James Harper on James Baxendale, free kick awarded. Andy Taylor has a direct shot on goal from the free kick.

41:26

Direct free kick taken by Jamie Paterson.

41:26 Substitution

Substitution Ben Purkiss goes off and James Chambers comes on.

41:26

Foul by Rob Jones on Will Grigg, free kick awarded.

39:53

The referee blows for offside. Ian McLoughlin restarts play with the free kick.

38:56

Shot by Febian Brandy from deep inside the penalty area misses to the right of the target.

34:41

Unfair challenge on Chris Brown by Febian Brandy results in a free kick. David Cotterill takes the direct free kick.

32:43

Chris Brown fouled by Paul Downing, the ref awards a free kick. David Cotterill crosses the ball in from the free kick, Adam Chambers makes a clearance. Corner taken by David Cotterill from the left by-line to the near post, save made by Ian McLoughlin. Inswinging corner taken by David Cotterill from the left by-line, Ian McLoughlin makes a save.

30:04

The offside flag is raised against Chris Brown. Andy Butler takes the indirect free kick.

28:50

Paul Keegan gives away a free kick for an unfair challenge on Febian Brandy. Direct free kick taken by Paul Downing.

25:33

Jamie Paterson challenges James Coppinger unfairly and gives away a free kick. Centre by David Cotterill, Effort from deep inside the area by Chris Brown misses to the right of the goal.

23:39

Free kick awarded for a foul by Chris Brown on Adam Chambers. Strike comes in from Andy Taylor from the free kick.

22:48

Febian Brandy fouled by Paul Quinn, the ref awards a free kick. Free kick crossed right-footed by Andy Taylor from left wing, clearance made by Chris Brown.

22:07

David Cotterill challenges Ben Purkiss unfairly and gives away a free kick. Ben Purkiss takes the free kick.

20:04

Foul by Billy Paynter on Adam Chambers, free kick awarded. Direct free kick taken by Adam Chambers.

19:11

Foul by Adam Chambers on Billy Paynter, free kick awarded. The free kick is swung in right-footed by David Cotterill.

18:18 Booking

Booking David Cotterill receives a caution.

15:54 Goal scored

Goal! - Billy Paynter - Doncaster 1 - 1 Walsall Billy Paynter grabs a goal from close range low into the middle of the goal. Doncaster 1-1 Walsall.

15:28

Free kick awarded for an unfair challenge on Paul Keegan by James Baxendale. David Cotterill takes the free kick.

14:19

Header by Billy Paynter from deep inside the penalty area misses to the right of the target.

13:02

Outswinging corner taken right-footed by David Cotterill, clearance by Andy Butler.

9:39

The referee blows for offside against Chris Brown. Ben Purkiss takes the free kick.

7:51

Foul by James Baxendale on Paul Keegan, free kick awarded. Free kick taken by Gary Woods.

6:47

Outswinging corner taken right-footed by David Cotterill, Andy Butler manages to make a clearance.

4:12

The offside flag is raised against Billy Paynter. Indirect free kick taken by Ian McLoughlin.

3:42

Andy Butler challenges Chris Brown unfairly and gives away a free kick. Direct free kick taken by Tommy Spurr.

1:12

The assist for the goal came from Andy Taylor.

1:12 Goal scored

Goal! - Andy Butler - Doncaster 0 - 1 Walsall Andy Butler finds the back of the net with a headed goal from close range. Doncaster 0-1 Walsall.

0:32

Free kick awarded for a foul by David Cotterill on Febian Brandy. Andy Taylor produces a cross,

0:00

The match gets underway.

Live data and text provided by our data suppliers