Millwall and Ipswich Town played out a seven-goal thriller at The Den on Tuesday night in the Sky Bet Championship, but it was The Tractor Boys who came away as the victors after Jordan Spence's late winner.

Jed Wallace, Aiden O'Brien and substitute Tom Elliott scored for Millwall, but a Martyn Waghorn double and Joe Garner's strike, coupled with Spence's winner, secured victory for Ipswich.

Neil Harris made just one change from the team which drew 1-1 with Bolton Wanderers on Saturday afternoon, with Aiden O'Brien returning to the side in place of Shane Ferguson, who dropped to the bench.

The game was just 44 seconds old when The Lions took the lead through Wallace. O'Brien's cross into the box was allowed to bounce on the edge of the six-yard box by the Ipswich defence, with the winger striking well and low into the corner to open the scoring.

However, with barely four minutes on the clock, The Tractor Boys drew level. Garner struck from distance and although Jordan Archer got a hand to the ball, it bounced up and into the net.

A frenetic start in front of goal made way for more of a midfield battle as the first-half wore on, but Millwall fashioned a chance on 25 minutes after good work from Wallace and Lee Gregory - George Saville's goal-bound shot was blocked, however.

Shaun Williams, on his 150th start for The Lions, floated a free-kick into the penalty area on 28 minutes, but Shaun Hutchinson could only head over the crossbar.

On 34 minutes, Ipswich nosed themselves in front. A break down the left-hand side saw former Millwall striker Waghorn guide a cross into the net.

But, The Lions were not to be denied and drew level just two minutes later. An effort from Saville was blocked, but O'Brien turned and struck towards goal, with the ball already over the line before Spence crashed the ball off the crossbar.

As three minutes of injury-time were nearly at an end to what was a breathless first-half, Ipswich once again went in front as Waghorn tucked home after David McGoldrick doggedly kept the ball in play.

The second-half was six minutes old when O'Brien looked to curl an attempt into the bottom corner, but Ipswich goalkeeper Bartosz Bialkowski was equal to it and tipped it around the post for a corner-kick.

The Lions were on top as the hour-mark approached and forced a long succession of corner-kicks, but were unable to force the ball into the net - O'Brien's overhead kick, which brushed the side-netting, acting as Millwall's best chance on 62 minutes.

Six minutes later, Saville nearly scored Millwall's third goal of the night, but after Bialkowski spilled the midfielder's shot, the stopper just clawed the ball away from the line as it agonisingly spun towards goal.

With The Lions dominating most of the second-half, Harris opted to introduce Ferguson into the play on 74 minutes in place of Meredith. One minute later, Elliott and Fred Onyedinma came on for Steve Morison and O'Brien.

The changes paid dividends as, on 80 minutes, Elliott got on the scoresheet, poking home at the back post after a Wallace free-kick failed to be cleared by the visitors' defence.

But, on 88 minutes, referee James Linington awarded a highly controversial free-kick to The Tractor Boys after two apparent fouls - one a handball and one on Elliott - were not seen. Spence headed home Grant Ward's free-kick for the seventh goal of the game.

The Lions had half-chances to level the scores once more in injury-time, but it was not to be as they slipped to defeat at The Den.

Millwall: Archer, McLaughlin, Meredith (Ferguson 74'), Hutchinson, Williams, Gregory, Wallace, Webster, Morison (Elliott 75'), O'Brien (Onyedinma 75'), Saville. Subs not used: King, Craig, Thompson, Cooper.

Booking: Meredith, Elliott

Scorer: Wallace 1', O'Brien 36', Elliott 80'

Ipswich Town: Bialkowski, Iorfa, Knudsen, Chambers, Skuse, Waghorn (Rowe 76'), McGoldrick, Spence, Garner, Ward, Sears. Subs not used: Crowe, Nydam, Kenlock, Morris, McDonnell, Woolfenden.

Booking: Ward, Garner, Chambers

Scorer: Garner 4', Waghorn 34' 45+3', Spence 88'

Referee: James Linington

Attendance: 11,819