Jordan Spence’s 88th-minute winner ensured Millwall lost 4-3 to Ipswich in a thrilling encounter at the Den.

Tom Elliott came off the bench and looked to have grabbed Millwall a late equaliser, but Spence broke Lions fans’ hearts.

Despite goals from Jed Wallace and Aiden O’Brien, the Lions trailed at the break thanks to Joe Garner’s long-range strike and Martyn Waghorn’s double.

Millwall are still searching for their first Championship win of the season.

Den boss Neil Harris made just one change to the starting eleven that drew with Bolton on Saturday, with O’Brien replacing Shane Ferguson.

Millwall went in front after just 45 seconds when Wallace’s deflected shot trickled past Bartosz Bialkowski from close-range.

But the Lions’ lead would last just three minutes thanks to an error by Jordan Archer. The former Tottenham goalkeeper met Garner’s swerving 30-yard strike with his palms, but failed to keep it out.

Millwall could have regained their advantage just moments later in an action-packed opening 10 minutes, however, O’Brien fired over from 12 yards.

The Lions had a big penalty appeal turned down by referee James Linington - Meredith was booked for diving when he appeared to be tripped by Spence.

Ipswich grabbed their second goal with just their second shot of the game in the 34th minute after former Millwall loanee Waghorn slammed home Grant Ward’s excellent cross.

But Millwall were level just two minutes later thanks to O’Brien’s acrobatics. Lee Gregory’s shot was pushed away by Bialkowski, and George Saville’s rebound hit the crossbar. But the ball fell to O’Brien, who superbly flicked the ball into the net.

The Lions’ joy was short-lived as Ipswich regained the lead just seconds before half-time. David McGoldrick capitalised on some sloppy defending to square the ball to Waghorn, who tapped the ball into an empty goal.

Millwall created chances throughout the game, but were punished for their mistakes. Shaun Williams and Saville cheaply lost the ball for Ipswich’s first and third goals. Harris’ men started the second-half brightly as Bialkowski had to be at his best to tip O’Brien’s curling shot around the post.

While the Lions pushed for an equaliser, they were lucky not to go two behind as Garner headed over from a corner after the hour mark.

And they nearly equalised when Saville’s long-range thunderbolt was just kept out by Bialkowski.

Millwall got their deserved third goal when substitute Elliott poked the ball home at the back post in the 80th minute.

But Spence had the last word when he headed in Ward’s free-kick late on.

Millwall XI: Archer, McLaughlin, Hutchinson, Webster, Meredith (Ferguson, 74), Wallace, Williams, Saville, O’Brien (Onyedinma, 76), Morison (Elliott, 75), Gregory

Subs not used: King, Craig, Thompson, Cooper.