Three first-half goals did the damage at The Den on Saturday afternoon as Millwall were defeated 3-1 by Preston North End in the Sky Bet Championship.
Andrew Hughes, Tom Clarke and Sean Maguire all found the net inside the opening half-hour to put North End three to the good, and despite substitute Ben Thompson's second-half goal - near enough his first touch after stepping off the bench - and a spirited and much-improved performance, any comeback was not to be.
Millwall boss Neil Harris made one change from Wednesday night's victory over Derby County, as Tom Elliott returned for his first start since 12th January in place of Shane Ferguson, who dropped to the bench - a place which Alex Pearce returned to after missing the midweek trip.
The first chance of the game came just two minutes in and went the way of Preston. A cross found the unmarked Tom Barkhuizen at the back post, but Murray Wallace was well placed to block the shot behind.
Unfortunately, just a minute later, North End were to find the net and open the scoring, as a ball into the box was controlled and fired home by Hughes.
The visitors continued to come forward and nearly found a second with just eight minutes on the clock, but Alan Browne's shot sailed over Jordan Archer's crossbar. Millwall's first foray into the box came on 10 minutes, but Mahlon Romeo's cross evaded everyone.
Romeo had to be on hand to block a Maguire effort as North End's good start continued, but the lead was doubled on 16 minutes after slack defending allowed a Paul Gallagher corner to bounce across the penalty area to the awaiting Clarke, who nodded home.
On 27 minutes matters got worse for Millwall, as a lucky deflection saw the ball bounce into the path of Maguire, who made no mistake in lifting the ball over Archer from inside the penalty area.
Despite their three-goal advantage the visitors were still attacking, and if not for a block on the edge of the area, Brad Potts may well have made it four seven minutes from the half-time break.
Two changes were made at half-time, with Tom Elliott and Murray Wallace replaced by Steve Morison and Ferguson, with the first chance of the second-half falling to Jake Cooper, but he nodded Ryan Leonard's corner back across goal.
The Lions were much better in the opening stages of the second period and almost found a way to goal on 59 minutes, but Ferguson's shot crept wide. At the other end, meanwhile, Potts forced Archer into a save.
Harris then brought on Thompson for Leonard, with the midfielder's first action of the game to be to slam the ball into the net from close range, reducing the arrears on 67 minutes. The home support's tails were now up, and Jed Wallace's driven shot into the arms of Declan Rudd on 70 minutes brought a roar - but the next goal should have come from Preston after Gallagher beat Romeo on the right-hand side; Maguire, however, sliced his effort.
With 15 minutes remaining Jed Wallace found his way into the box, but chose to shoot - wide - instead of crossing for the awaiting Gregory. The ball was in the Preston net once more with 10 minutes remaining, but Thompson's potential second goal was correctly ruled out for offside - albeit with an extremely late flag.
Millwall kept peppering the Preston defence and almost brought the deficit to one with six minutes to go, but after Jed Wallace's long-ranger shot was parried, Gregory's follow-up went wide.
Throughout five minutes of injury time Millwall continued to plug away in their attempts to get back into the game, but could not find a way to goal, suffering a first home defeat since Blackburn Rovers won all three points in early January.
Millwall: Archer, Hutchinson, Cooper, Williams, J. Wallace, Gregory, Romeo, Elliott (Morison 46'), M. Wallace (Ferguson 46'), Leonard (Thompson 66'), Marshall. Subs not used: Martin, Onyedinma, Pearce, O'Brien.
Scorer: Thompson 67'
Booking: Williams, J. Wallace
Preston North End: Rudd, Pearson, Clarke, Davies, Browne, Gallagher (Nmecha 72'), Storey, Hughes, Maguire, Barkhuizen (Johnson 76'), Potts (Ledson 90+2'). Subs not used: Crowe, Earl, Rafferty, Stockley.
Scorer: Hughes 3', Clarke 16', Maguire 27'
Referee: Stephen Martin
Attendance: 13,265 (1,016)