A goal from Chris Taylor took Millwall back into the Championship play-off places courtesy of victory over fellow promotion hopefuls Leicester.
Substitute winger Taylor side-footed home Andy Keogh's cross midway through the second half of a scrappy match to seal the Lions' win.
It meant a return to winning ways for Millwall after their 13-match unbeaten run ended at Ipswich last week.
It also condemned the Foxes to their sixth defeat on the road this season.
The two sides now have just a point and a place separating them in the table with City in fifth on 37 and Kenny Jackett's side sixth on 36.
It was Leicester who made the livelier start in south London with David Nugent seeing a shot deflected wide and Andy King having an effort blocked.
Millwall soon asserted themselves on the game, though, and on-loan striker Chris Wood put a header wide before Liam Trotter forced a smart save from Foxes keeper Kasper Schmeichel after finding space in the area.
The home side continued to dominate after the break and they broke the deadlock in the 67th minute when half-time replacement Taylor converted Keogh's cross from close range.
Leicester attempted to hit back and Nugent fired wide before home keeper David Forde saved Wes Morgan's stoppage-time shot, but Millwall held on for the win.
Millwall manager Kenny Jackett:
"We had to weather the storm and we defended very well. But then we started to create chances of our own and eventually made it a dominant performance.
"The goal came at the right time and gave us something to hold onto, to see the game out.
"We showed some guts, we had to be at our very best against a Leicester side who have real quality across the board. We defended very well in injury time, there were balls flying in all over the place but my two centre-halves handled that very well.
"Darius Henderson is coming back soon and that will help us because we need to maintain our position and push forward to build on this great start."
Leicester boss Nigel Pearson:
"I see the game as a bit of a missed opportunity for us. We did quite well in the first half but conceded a sloppy goal which is difficult to take.
"Going into the game, we thought we had a good chance to get something out of it but we couldn't find that bit of quality in the final third.
"But you've got to give Millwall credit, they played with great spirit and defended everything we threw at them. As soon as we created the opportunities our execution wasn't quite right and we couldn't open them up.
"We put them under a lot of pressure in the first half, but in the second half they came out with a higher tempo and made it difficult for us. We made too many unforced errors and allowed them to keep it in our half when really it was straightforward to clear the ball, but that happens sometimes."
Live text and stats
Saturday, 15 December 2012
C Taylor 67
03 Shittu yellow card
28 Malone (C Taylor 46)
26 Abdou yellow card
22 N'Guessan (Keogh 66)
39 Wood (Batt 79)
33 M Taylor,
19 C Taylor,
02 De Laet
10 King (James 70)
11 Dyer (Futacs 70 yellow card)
24 Knockaert yellow card (Marshall 64)
35 Nugent yellow card
Ref: HooperAtt: 10,189
Attempts on target
Attempts off target
90:00+5:07 The match has reached full-time.
90:00+4:32 Unfair challenge on Zak Whitbread by Andy Keogh results in a free kick. Direct free kick taken by Paul Konchesky.
90:00+4:10 Wes Morgan takes a shot. David Forde makes a save.
90:00+2:01 Inswinging corner taken right-footed by Ben Marshall, clearance by Shane Lowry.
90:00+0:26 The assistant referee flags for offside against Andy Keogh. Free kick taken by Kasper Schmeichel.
89:31 Handball decision goes against Nadjim Abdou. Paul Konchesky restarts play with the free kick.
88:46 David Nugent has an effort at goal from just inside the box that misses to the right of the goal.
86:33 Free kick awarded for an unfair challenge on Mark Beevers by Marko Futacs. David Forde restarts play with the free kick.
85:21 David Forde takes the direct free kick. The referee blows for offside. Kasper Schmeichel takes the indirect free kick.
85:21 Booking The referee shows Marko Futacs a yellow card.
84:59 Adam Smith fouled by Marko Futacs, the ref awards a free kick.
83:53 Marko Futacs challenges Nadjim Abdou unfairly and gives away a free kick. David Forde restarts play with the free kick.
82:07 Ben Marshall has an effort direct from the free kick, David Forde makes a save.
82:07 Booking Danny Shittu is booked.
81:54 Unfair challenge on Ben Marshall by Nadjim Abdou results in a free kick.
80:06 Ben Marshall takes a inswinging corner to the near post, Andy Keogh makes a clearance.
78:10 Substitution (Millwall) makes a substitution, with Shaun Batt coming on for Chris Wood.
76:26 Outswinging corner taken from the right by-line by Ben Marshall.
74:46 Zak Whitbread gives away a free kick for an unfair challenge on Chris Wood. Mark Beevers takes the direct free kick.
74:23 Adam Smith gives away a free kick for an unfair challenge on Jamie Vardy. Paul Konchesky takes the free kick.
73:53 Ben Marshall produces a right-footed shot from outside the penalty area and misses left.
71:42 Free kick awarded for a foul by Andy Keogh on Danny Drinkwater. Direct free kick taken by Zak Whitbread.
69:24 Substitution Marko Futacs comes on in place of Lloyd Dyer.
69:24 Substitution Matty James comes on in place of Andy King.
69:03 Shot by Danny Drinkwater from outside the box goes high over the crossbar.
68:18 Lloyd Dyer fouled by Andy Keogh, the ref awards a free kick. Free kick crossed right-footed by Ben Marshall from left wing,
save made by David Forde.
66:15 The assist for the goal came from Liam Trotter.
66:15 GOAL - Chris Taylor:Millwall 1 - 0 Leicester Chris Taylor scores a goal from inside the six-yard box low into the middle of the goal. Millwall 1-0 Leicester.
65:02 Kasper Schmeichel takes the indirect free kick.
65:02 Substitution Dany N'Guessan leaves the field to be replaced by Andy Keogh.
65:02 The assistant referee signals for offside against Chris Wood.
64:48 Foul by Zak Whitbread on Dany N'Guessan, free kick awarded. Liam Trotter takes the direct free kick.
64:22 Danny Drinkwater has a shot on goal from outside the area which misses left.
63:18 Substitution Ben Marshall joins the action as a substitute, replacing Anthony Knockaert.
61:03 Anthony Knockaert gives away a free kick for an unfair challenge on Liam Trotter. David Forde takes the direct free kick.
59:45 Inswinging corner taken left-footed by Anthony Knockaert, Nadjim Abdou makes a clearance.
58:39 Chris Wood produces a right-footed shot from inside the area that goes over the bar.
57:20 Effort on goal by Chris Taylor from just inside the penalty area goes harmlessly over the target.
56:28 Shot by Danny Drinkwater from just outside the area goes over the net.
53:56 Free kick awarded for a foul by Adam Smith on Danny Drinkwater. Paul Konchesky takes the free kick.
53:26 Chris Wood takes a shot. Andy King gets a block in.
51:04 Shane Lowry takes a shot. Blocked by Ritchie De Laet.
50:43 Dany N'Guessan takes a shot. Paul Konchesky gets a block in.
47:08 Chris Taylor is flagged offside by the assistant referee. Indirect free kick taken by Kasper Schmeichel.
46:19 Jamie Vardy concedes a free kick for a foul on Danny Shittu. David Forde takes the direct free kick.
45:08 Free kick awarded for an unfair challenge on Chris Wood by Zak Whitbread. James Henry restarts play with the free kick.
45:01 The second half kicks off.
45:01 Substitution Chris Taylor is brought on as a substitute for Scott Malone.
45:00+3:07 The referee calls an end to the first half.
45:00+0:42 Dany N'Guessan takes a shot. Save by Kasper Schmeichel.
42:44 Foul by Jamie Vardy on Mark Beevers, free kick awarded. David Forde restarts play with the free kick.
39:48 Outswinging corner taken by James Henry, Mark Beevers has a headed effort at goal from deep inside the area missing to the
left of the target.
37:51 Outswinging corner taken left-footed by Anthony Knockaert from the left by-line. Danny Drinkwater takes a shot. Save by David
36:39 David Nugent fouled by Shane Lowry, the ref awards a free kick. Anthony Knockaert sends in a cross, David Nugent takes a shot.
Save made by David Forde.
34:49 James Henry has an effort direct from the free kick.
34:49 Booking The referee shows Anthony Knockaert a yellow card.
34:31 Unfair challenge on James Henry by Anthony Knockaert results in a free kick.
31:57 Mark Beevers concedes a free kick for a foul on Kasper Schmeichel. Kasper Schmeichel takes the free kick.
31:38 Corner from the right by-line taken by Scott Malone, Kasper Schmeichel makes a save.
31:23 Liam Trotter takes a shot. Save by Kasper Schmeichel.
29:32 Foul by Dany N'Guessan on Danny Drinkwater, free kick awarded. Direct free kick taken by Wes Morgan.
27:36 James Henry fouled by Paul Konchesky, the ref awards a free kick. Centre by Scott Malone, Close range headed effort by Dany
N'Guessan clears the crossbar.
26:35 Adam Smith handles the ball and concedes a free kick. Kasper Schmeichel restarts play with the free kick.
24:16 Free kick awarded for an unfair challenge on Zak Whitbread by Dany N'Guessan. Wes Morgan takes the free kick.
22:44 Effort from outside the penalty box by James Henry goes wide left of the target.
21:54 Unfair challenge on Scott Malone by Ritchie De Laet results in a free kick. Direct free kick taken by Mark Beevers.
19:55 Free kick taken by Shane Lowry.
19:55 Booking Booking for Nadjim Abdou for unsporting behaviour.
19:30 Booking David Nugent is shown a yellow card for unsporting behaviour.
18:11 Wes Morgan challenges Liam Trotter unfairly and gives away a free kick.
17:23 Headed effort on goal by Chris Wood from inside the penalty box misses to the right of the target.
15:49 Adam Smith gives away a free kick for an unfair challenge on Danny Drinkwater. Direct free kick taken by Kasper Schmeichel.
14:04 Free kick awarded for an unfair challenge on Wes Morgan by Dany N'Guessan. Direct free kick taken by Wes Morgan.
12:24 Unfair challenge on Chris Wood by Zak Whitbread results in a free kick. Mark Beevers restarts play with the free kick.
9:41 Andy King takes a shot. Mark Beevers gets a block in.
8:14 Corner taken by Anthony Knockaert, Wes Morgan concedes a free kick for a foul on Danny Shittu. Free kick taken by David Forde.
6:00 The assistant referee flags for offside against Dany N'Guessan. Direct free kick taken by Paul Konchesky.
4:17 Danny Drinkwater fouled by James Henry, the ref awards a free kick. Direct free kick taken by Danny Drinkwater.
3:35 Inswinging corner taken left-footed by Anthony Knockaert from the right by-line, clearance by Mark Beevers.
2:51 David Nugent takes a shot. Blocked by Mark Beevers. The referee blows for offside against David Nugent. David Forde takes
the free kick.
2:38 Handball decision goes against Dany N'Guessan. Free kick taken by Kasper Schmeichel.
0:20 Inswinging corner taken left-footed by Anthony Knockaert, clearance by Danny Shittu.
0:00 The game begins.
Live text and data provided by The Press Association.
This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.