Match ends, Millwall 0, Oxford United 3.
Millwall slipped to a disappointing defeat at home to Oxford but remain in the League One play-off places.
An early Conor McAleny double and Josh Ruffels' second-half header did the damage and lifted the U's to ninth.
Despite early pressure from the hosts, the U's took the lead after five minutes when McAleny fired in from the edge of the box.
The winger, on loan from Everton, then doubled the lead, cutting in from the left and curling into the far corner.
Neither side could muster another shot on target during a frustrating first half for the hosts.
Steve Morison was put clean through on the hour mark but fired straight at Simon Eastwood, and Oxford sealed victory when Ruffels nodded in Chris Maguire's 70th-minute corner at the far post.
Millwall are one point above seventh-placed Southend.
Match report supplied by the Press Association.
- 5CraigBooked at 29minsSubstituted forFergusonat 45'minutes
- 14J Wallace
- 22O'BrienSubstituted forWorrallat 78'minutes
- 10MaguireSubstituted forHemmingsat 85'minutes
- 35CarrollSubstituted forRothwellat 78'minutes
- 28JohnsonSubstituted forHallat 85'minutes
- Dean Whitestone
- Shots on Target
Second Half ends, Millwall 0, Oxford United 3.
Attempt missed. Lee Gregory (Millwall) right footed shot from the left side of the box is close, but misses to the right.
Attempt missed. Ben Thompson (Millwall) right footed shot from outside the box is close, but misses to the left.
Substitution, Oxford United. Robert Hall replaces Marvin Johnson.
Substitution, Oxford United. Kane Hemmings replaces Chris Maguire.
Attempt missed. Steve Morison (Millwall) header from a difficult angle on the right is close, but misses to the right.
Delay over. They are ready to continue.
Substitution, Millwall. David Worrall replaces Aiden O'Brien.
Substitution, Oxford United. Joe Rothwell replaces Canice Carroll because of an injury.
Delay in match Canice Carroll (Oxford United) because of an injury.
Attempt missed. Steve Morison (Millwall) right footed shot from outside the box misses to the right.
Goal! Millwall 0, Oxford United 3. Josh Ruffels (Oxford United) header from the right side of the six yard box to the bottom right corner. Assisted by Chris Maguire with a cross following a corner.
Corner, Oxford United. Conceded by Shaun Williams.
Foul by Byron Webster (Millwall).
Marvin Johnson (Oxford United) wins a free kick in the defensive half.
Corner, Millwall. Conceded by Joe Skarz.
Foul by Jed Wallace (Millwall).
Curtis Nelson (Oxford United) wins a free kick in the defensive half.
Steve Morison (Millwall) wins a free kick in the attacking half.