Andy Keogh marked his return to the Millwall starting XI with the winner 14 minutes from time against Derby.

Liam Feeney deservedly put the hosts ahead with a first-time shot and though an offside flag was raised, referee Graham Salisbury awarded the goal.

Millwall wasted chances to extend their lead and the Rams levelled as 17-year-old Will Hughes fired in from 20 yards.

But Scott Malone laid Feeney's long ball off to Keogh, who neatly tucked in his fifth goal of the season.

Republic of Ireland striker Keogh only started because of an injury to top-scorer Darius Henderson, and Millwall were also without winger James Henry, plus manager Kenny Jackett, who was struck down by illness.

They dominated the early exchanges, however, and Chris Wood had already blazed over when Feeney, who replaced Henry, scored from Chris Taylor's cross.

There was controversy surrounding the goal as celebrations were cut short by the flag, but referee Salisbury consulted with his official and then signalled for the goal.

As Millwall continued to press, Keogh curled the ball into the area but Wood was inches away, and the start of the second half saw Feeney shoot narrowly wide and Lowry head over from a corner.

The Rams had created little but Craig Bryson laid the ball off for Hughes to crash in his second senior goal.

However, Keogh's strike ensured Millwall stretched their unbeaten run to nine matches, with Lions goalkeeper David Forde saving a late drive from Michael Jacobs.

Millwall assistant manager Joe Gallen, standing in for Kenny Jackett, who missed the game with flu:

"I had an idea on Thursday he wasn't going to make it but carried on with what he was going to do.

"Kenny picked the team and discussed what training we are going to do and told me what the team needed to do.

"The team has been defending and running and working and blocking for the previous nine games. It's been a big feature of our performances."

Derby manager Nigel Clough:

"We thought we should have had a penalty at the end and one at the end of the first half.

"We can't control that. We can only control our own performance and we thought we deserved to go in level at half-time."

Match Stats

Shots

14 9

On target

8 6

Corners

5 4

Fouls

9 9

Live Text Commentary

90:00 +3:43 Full time

Full Time The final whistle goes and the game is over.

90:00 +2:58

Adam Smith concedes a free kick for a foul on Michael Jacobs. Indirect free kick taken by Gareth Roberts.

90:00 +1:32

Will Hughes takes a shot. Clearance made by Nadjim Abdou. Michael Jacobs takes the outswinging corner, inswinging corner taken from the right by-line by Will Hughes, save made by David Forde. Save by David Forde.

89:42

Michael Jacobs concedes a free kick for a foul on Adam Smith. Adam Smith restarts play with the free kick.

89:02

Michael Jacobs takes a shot. Save by David Forde.

88:32

Michael Jacobs takes a shot. Save made by David Forde.

87:10

Outswinging corner taken right-footed by Liam Feeney, free kick awarded for an unfair challenge on Richard Keogh by Chris Wood. Adam Legzdins restarts play with the free kick.

87:10 Booking

Booking Theo Robinson receives a yellow card.

86:51

Scott Malone takes a shot. Richard Keogh gets a block in.

80:34 Substitution

Substitution Michael Jacobs joins the action as a substitute, replacing Conor Sammon.

77:26

Will Hughes takes a shot. Andy Keogh gets a block in.

75:15

Scott Malone provided the assist for the goal.

75:15 Goal scored

Goal! - Andy Keogh - Millwall 2 - 1 Derby Andy Keogh grabs a goal from the edge of the penalty area to the top right corner of the goal. Millwall 2-1 Derby.

74:39

Outswinging corner taken from the right by-line by Liam Feeney.

72:07

Free kick awarded for a foul by Conor Sammon on Adam Smith. Free kick taken by David Forde.

70:38

Conor Sammon handles the ball and concedes a free kick. David Forde takes the indirect free kick.

69:24

Craig Bryson is ruled offside. Free kick taken by David Forde.

68:45

Conor Sammon is ruled offside. Indirect free kick taken by David Forde.

67:04

Free kick awarded for an unfair challenge on Nadjim Abdou by Craig Bryson. Liam Feeney crosses the ball from the free kick right-footed from left wing, clearance made by James O'Connor.

64:51

Free kick awarded for a foul by Paul Coutts on Shane Lowry. Free kick taken by David Forde.

63:49

Chris Wood has an effort at goal from close range which goes wide of the left-hand upright.

63:16

Chris Wood takes a shot. Clearance by Richard Keogh.

61:37

Free kick awarded for an unfair challenge on Richard Keogh by Chris Wood. Adam Legzdins takes the free kick.

59:50

Free kick awarded for a foul by John Brayford on Adam Smith. Free kick taken by David Forde.

59:26

Corner taken short by Will Hughes.

56:01

Adam Smith takes a shot from deep inside the box clearing the bar.

54:00

Conor Sammon has an effort from just inside the box that misses to the left of the target.

52:02

Assist by Craig Bryson.

52:02 Goal scored

Goal! - Will Hughes - Millwall 1 - 1 Derby Goal scored by Will Hughes from just outside the penalty area to the top left corner of the goal. Millwall 1-1 Derby.

50:44

Liam Feeney has an effort at goal from just inside the box that misses to the right of the goal.

49:26

Shot by Conor Sammon from outside the box goes high over the target.

47:26

Foul by Andy Keogh on Theo Robinson, free kick awarded. Will Hughes takes the free kick.

46:22

Outswinging corner taken by Liam Feeney from the right by-line played to the near post, Header from close range by Shane Lowry clears the bar.

45:01

The game restarts for the second half.

45:00 +3:42 Half time

Half Time The ref blows to signal half-time.

45:00 +3:00

Richard Keogh takes a shot.

45:00 +2:05

Andy Keogh challenges Richard Keogh unfairly and gives away a free kick. Free kick taken by Adam Legzdins.

45:00 +1:13 Substitution

Substitution Chris Taylor goes off and Scott Malone comes on.

43:06

Conor Sammon gives away a free kick for an unfair challenge on Mark Beevers. Indirect free kick taken by David Forde.

38:02

Andy Keogh takes a shot. Richard Keogh gets a block in.

36:46

Will Hughes takes a shot. Blocked by Danny Shittu.

35:30

Chris Wood concedes a free kick for a foul on Richard Keogh. Adam Legzdins takes the indirect free kick.

32:05

Assist by Chris Taylor.

32:05 Goal scored

Goal! - Liam Feeney - Millwall 1 - 0 Derby Goal scored by Liam Feeney from deep inside the penalty box to the top left corner of the goal. Millwall 1-0 Derby.

29:18

Outswinging corner taken right-footed by Paul Coutts, clearance made by Liam Trotter.

27:02

Free kick taken by David Forde.

27:02 Booking

Booking Jeff Hendrick is booked.

26:46

Liam Feeney fouled by Jeff Hendrick, the ref awards a free kick.

24:36

Unfair challenge on Shane Lowry by Theo Robinson results in a free kick. Shane Lowry takes the free kick.

19:19

Outswinging corner taken by Liam Feeney from the right by-line, Shot from deep inside the area by Chris Wood clears the bar.

17:27

Andy Keogh is flagged offside by the assistant referee. Richard Keogh takes the indirect free kick.

16:50

Chris Wood takes a shot. Save by Adam Legzdins.

15:09

Unfair challenge on Craig Bryson by Chris Wood results in a free kick. Free kick taken by Adam Legzdins.

12:57

Corner taken by Liam Feeney, Shane Lowry takes a shot. Will Hughes gets a block in.

12:31

Liam Trotter takes a shot. Jeff Hendrick gets a block in.

11:59

Indirect free kick taken by David Forde.

11:59 Booking

Booking Craig Bryson is shown a yellow card for unsporting behaviour.

11:50

Adam Smith fouled by Craig Bryson, the ref awards a free kick.

10:10

Unfair challenge on John Brayford by Liam Trotter results in a free kick. Indirect free kick taken by Richard Keogh.

6:55

Paul Coutts takes the free kick.

6:55 Booking

Booking Shane Lowry is shown a yellow card.

6:46

Free kick awarded for an unfair challenge on Paul Coutts by Shane Lowry.

2:16

Liam Trotter takes a shot. Adam Legzdins makes a save.

0:00

The match begins.

Live data and text provided by our data suppliers