DJ Campbell's brace helped Ipswich record their third successive win and end Millwall's 13-match unbeaten streak in the Championship.
Campbell, on loan from Queens Park Rangers, converted a flowing move from close range to put the home side ahead with his seventh goal in 12 games.
He then turned provider by chasing down Danny Shittu to gain possession and feed Daryl Murphy who swept home.
Campbell scored his second from the penalty spot after Shane Lowry handled.
It means Ipswich have recorded three victories in a row for the first time in 10 months and Mick McCarthy, who replaced Paul Jewell in November, has won five of his eight games at the helm.
Despite the convincing win they still remain just five points clear of the relegation zone, while the defeat leaves Millwall in seventh place.
Millwall began the Portman Road encounter as the second tier's form side having won four of their last five matches, boasting four successive clean sheets in the process.
And they should have taken the lead after enjoying the better of the opening half-hour.
New Zealand striker Chris Wood had an early goal ruled out for offside before heading a great chance over the Ipswich crossbar, while Town goalkeeper Stephen Henderson denied efforts from Andy Keogh, Liam Trotter and James Henry.
Ipswich took control when Campbell turned in Aaron Cresswell's superb left-wing cross, before Murphy doubled their advantage just five minutes after the restart.
Millwall goalkeeper David Forde tipped Lee Martin's vicious free-kick over the crossbar, but he could not prevent the Tractor Boys netting a third through Campbell's penalty.
Lions defender Shittu cleared off the line to deny Martin scoring a late fourth.
Ipswich manager Mick McCarthy:
"Everyone is starting to talk differently, rather than about staying up, but I'm just happy with the points. I was delighted and thought we deserved it, although I wouldn't say it was easy.
"The lads are knackered and really put a shift in. Teams only play as much as we allow them to and I thought our boys were terrific in stopping Millwall play.
"Other people will be interested in DJ Campbell because he's scoring goals. He wants to sign for a club permanently and we'd like to take him, but there will be mitigating circumstances.
"I left (QPR boss) Harry Redknapp a message the other day but I think he's got plenty on at the moment."
Millwall boss Kenny Jackett:
"Wood's (disallowed) goal from Lowry's pass was clearly onside, having seen it again, but we've gone in 1-0 down.
"Their keeper has made three very good saves and we've had an onside goal disallowed.
"We could have been one or two up in that period, but instead we found ourselves 1-0 down.
"The start of the second half was poor for us. Two poor goals took the game away from us."
- 13 Henderson
- 03 Cresswell
- 04 Chambers
- 20 Smith
- 24 Orr (Hewitt - 88' )
- 07 Edwards
- 08 N'daw
- 11 Martin Booked
- 17 Drury
- 05 Campbell (Chopra - 84' )
- 27 Murphy (Barnett - 84' )
- 01 Loach
- 02 Hewitt
- 06 Higginbotham
- 22 Carson
- 09 E'-Thomas
- 10 Chopra
- 25 Barnett
- 01 Forde
- 03 Shittu
- 12 Lowry
- 16 Beevers Booked
- 25 Smith
- 06 Trotter
- 14 Henry
- 19 C Taylor (Wright - 56' )
- 26 Abdou (N'Guessan - 56' )
- 20 Keogh
- 39 Wood Booked
- 33 M Taylor
- 21 Smith
- 27 Osborne
- 28 Malone
- 04 Wright
- 15 Feeney
- 22 N'Guessan
Live Text Commentary
Full Time The referee ends the match.90:00 +2:34
Andy Drury fouled by Dany N'Guessan, the ref awards a free kick. Direct free kick taken by Stephen Henderson.90:00 +0:56
Elliott Hewitt delivers the ball, clearance by Adam Smith.90:00 +0:24
Lee Martin takes the inswinging corner, Tyrone Barnett takes a shot. Save made by David Forde.90:00
Lee Martin takes a shot. Clearance by Danny Shittu.87:54
Andy Drury gives away a free kick for an unfair challenge on Liam Trotter. Free kick taken by Josh Wright.86:41 Substitution
Substitution Bradley Orr leaves the field to be replaced by Elliott Hewitt.86:41
Corner taken short by Andy Keogh. Centre by James Henry.83:08
Indirect free kick taken by Stephen Henderson.83:08 Substitution
Substitution Tyrone Barnett joins the action as a substitute, replacing Daryl Murphy.83:08 Substitution
Substitution Michael Chopra on for DJ Campbell.83:08
The official flags Liam Trotter offside.82:34
Lee Martin takes a shot. Mark Beevers gets a block in.81:41
Corner taken right-footed by James Henry from the right by-line, Andy Drury makes a clearance.80:02
Free kick taken by Andy Drury. Aaron Cresswell takes a shot. Mark Beevers gets a block in. The ball is swung over by Andy Keogh, clearance by Tommy Smith.80:02 Booking
Booking Mark Beevers receives a yellow card.79:47
Mark Beevers challenges DJ Campbell unfairly and gives away a free kick.78:54
Lee Martin takes a shot. Save by David Forde.78:30
The ball is swung over by Shane Lowry, Luke Chambers makes a clearance.77:32
The assistant referee flags for offside against Dany N'Guessan. Stephen Henderson takes the indirect free kick.
Lee Martin takes a short corner.76:58
Lee Martin delivers the ball, clearance made by Dany N'Guessan.76:23
Corner taken by James Henry from the right by-line, Daryl Murphy manages to make a clearance.76:13
Centre by James Henry, clearance made by Luke Chambers.75:50
Corner taken right-footed by James Henry from the right by-line, Bradley Orr manages to make a clearance.74:20
Dany N'Guessan challenges Carlos Edwards unfairly and gives away a free kick. Stephen Henderson restarts play with the free kick.73:28
DJ Campbell fouled by Mark Beevers, the ref awards a free kick. Free kick taken by Guirane N'Daw.71:57
Unfair challenge on Chris Wood by Luke Chambers results in a free kick. James Henry produces a strike on goal direct from the free kick.69:27
The ball is sent over by Andy Keogh, Tommy Smith makes a clearance.68:38
The ball is swung over by Josh Wright, Andy Keogh takes a shot. Stephen Henderson makes a save.66:45
The ball is delivered by James Henry.65:26
David Forde takes the free kick.65:26 Booking
Booking Lee Martin booked.64:57
Mark Beevers fouled by Lee Martin, the ref awards a free kick.63:51 Goal scored
Goal! - DJ Campbell - Ipswich 3 - 0 Millwall Placed penalty scored by DJ Campbell. Ipswich 3-0 Millwall.62:58
Shane Lowry is penalised for handball and concedes a .61:02
Aaron Cresswell delivers the ball, Effort from inside the six-yard box by DJ Campbell goes wide left of the target.60:16
Guirane N'Daw sends in a cross, Danny Shittu manages to make a clearance.57:24
Shot from just outside the box by Guirane N'Daw goes over the target.56:54
Outswinging corner taken from the right by-line by Lee Martin. Centre by Carlos Edwards, clearance by Danny Shittu.56:26
A cross is delivered by James Henry, Stephen Henderson makes a save.56:01
Outswinging corner taken right-footed by Lee Martin from the right by-line, James Henry makes a clearance.55:30 Substitution
Substitution (Millwall) makes a substitution, with Dany N'Guessan coming on for Nadjim Abdou.55:30 Substitution
Substitution Josh Wright replaces Chris Taylor.54:29
Aaron Cresswell fouled by Mark Beevers, the ref awards a free kick. Free kick taken by Lee Martin. The ball is sent over by Lee Martin, David Forde makes a save.52:32
Free kick awarded for a foul by Bradley Orr on Nadjim Abdou. Strike on goal comes in from Chris Wood from the free kick, Luke Chambers gets a block in. Effort on goal by Nadjim Abdou from outside the penalty box goes harmlessly over the bar.51:05
The official flags Daryl Murphy offside. Indirect free kick taken by David Forde.49:07
Assist on the goal came from DJ Campbell.49:07 Goal scored
Goal! - Daryl Murphy - Ipswich 2 - 0 Millwall Goal scored by Daryl Murphy from close in to the top right corner of the goal. Ipswich 2-0 Millwall.49:01
The ball is sent over by DJ Campbell,48:12
The assistant referee signals for offside against Chris Taylor. Stephen Henderson takes the free kick.47:59
The offside flag is raised against Daryl Murphy. Mark Beevers takes the free kick.47:30
Bradley Orr produces a cross, clearance by Adam Smith.45:01
The second half has started.45:00 +1:13 Half time
Half Time The players leave the pitch at half time.43:34
Unfair challenge on Guirane N'Daw by Nadjim Abdou results in a free kick. Aaron Cresswell restarts play with the free kick.40:46
James Henry has an effort at goal from outside the area missing to the wide right of the goal.38:34
Danny Shittu challenges DJ Campbell unfairly and gives away a free kick. Guirane N'Daw produces a strike on goal direct from the free kick.38:10
The ball is sent over by Carlos Edwards, clearance by Adam Smith.37:48
Foul by Andy Drury on Shane Lowry, free kick awarded. Shane Lowry takes the free kick.36:23
Assist by Aaron Cresswell.36:23 Goal scored
Goal! - DJ Campbell - Ipswich 1 - 0 Millwall DJ Campbell grabs a goal from inside the six-yard box to the bottom right corner of the goal. Ipswich 1-0 Millwall.36:17
The ball is delivered by Aaron Cresswell,34:03
The ball is swung over by Andy Drury, Effort on goal by Daryl Murphy from deep inside the area goes harmlessly over the bar.33:17
Direct free kick taken by Aaron Cresswell.33:17 Booking
Booking Chris Wood receives a yellow card.33:11
Lee Martin fouled by Chris Wood, the ref awards a free kick.31:11
Liam Trotter takes a shot. Stephen Henderson makes a save. James Henry takes a shot. Save made by Stephen Henderson. Outswinging corner taken from the right by-line by James Henry, Andy Keogh gives away a free kick for an unfair challenge on Carlos Edwards. Stephen Henderson takes the free kick.30:35
Shot from long range by Lee Martin misses to the right of the goal.29:31
The ball is sent over by Carlos Edwards.28:49
Centre by Lee Martin, blocked by Nadjim Abdou. Short corner worked by Lee Martin. The ball is swung over by Aaron Cresswell.26:31
Guirane N'Daw gives away a free kick for an unfair challenge on Adam Smith. James Henry takes the direct free kick.24:47
The referee blows for offside. Indirect free kick taken by David Forde.24:16
The ball is sent over by Lee Martin, Danny Shittu manages to make a clearance.23:12
Chris Taylor crosses the ball.22:50
Danny Shittu fouled by DJ Campbell, the ref awards a free kick. David Forde takes the direct free kick.20:52
The assistant referee signals for offside against DJ Campbell. David Forde restarts play with the free kick.19:59
Mark Beevers produces a cross, save by Stephen Henderson.18:37
The ball is delivered by Lee Martin, Adam Smith gets a block in.15:47
Lee Martin challenges Adam Smith unfairly and gives away a free kick. A cross is delivered by James Henry, Chris Wood has a header from inside the six-yard box and clears the crossbar.14:13
The ball is delivered by Chris Taylor, Andy Keogh takes a shot. Save by Stephen Henderson.13:40
Daryl Murphy takes a shot. Save by David Forde.10:59
Outswinging corner taken right-footed by James Henry from the right by-line.10:27
Centre by James Henry, clearance made by Luke Chambers. A cross is delivered by Andy Keogh, Tommy Smith makes a clearance.8:25
Danny Shittu challenges DJ Campbell unfairly and gives away a free kick. The ball is crossed by Aaron Cresswell, Header from close range by Tommy Smith clears the bar.6:22
Lee Martin crosses the ball, Headed effort from deep inside the area by Daryl Murphy misses to the left of the goal.4:39
The ball is sent over by Lee Martin, David Forde makes a comfortable save.3:49
Chris Wood is ruled offside. Stephen Henderson takes the free kick.2:42
Inswinging corner taken from the left by-line by Lee Martin, Chris Wood manages to make a clearance.1:16
The ball is sent over by Daryl Murphy.0:00
The game kicks-off.
Live data and text provided by our data suppliers