Report | Oxford United 1-2 Millwall
The Lions were trailing to Liam Sercombe's 31st-minute opener for Oxford when Morison hit a stunning 25-yarder to level matters up just five minutes later.
Aiden O'Brien put Millwall ahead four minutes into the second-half and despite being under the cosh for significant spells thereafter, Neil Harris' men dug in deep to claim a fourth win in five games.
Romeo was twice involved in neat moves down the right as The Lions looked to make an early breakthrough, but it was Oxford who nearly stole into a 10th-minute lead when Chris Maguire deceived everyone with a shot rather than cross from a tight angle, and the ball hit the side netting.
A Shaun Williams' free-kick was nearly turned in by defender Byron Webster as The Lions again asked questions of the home defence in a bright early spell.
But it was Oxford who took the lead midway through the half against the run of play. Marvin Johnson took advantage of a momentary lapse of concentration in the visiting defence and whipped over a low cross from the left that was fired home by Sercombe at the back post.
It took Millwall just five minutes to haul themselves level - and what a scorcher it was! Morison reacted quickest to Gregory's chest-down from a long Archer upfield punt, picked up the ball around 25-yards out and hit an instinctive volley that smashed into the back of the net.
Morison's goal, his third in five games and ninth of the campaign, ensured that the teams went in level at the break.
The Lions started the second-half in the same positive manner that they had the first, except on this occasion were duly rewarded with a goal. A penetrative piece of play by Romeo on the right set up the chance, and O'Brien was perfectly placed to take one touch and thump the ball into the back of the net to put Millwall 2-1 ahead with 49 minutes on the clock.
Onyedinma was close to adding a third goal after 58 minutes when he sprinted half the length of the pitch before being crowded out by two defenders and the keeper as he prepared to shoot.
At this stage Millwall were enjoying a decent spell of possession, but Oxford continued to look threatening on the break and it took a fine save by Archer to keep out Dan Crowley's low grubber following a quick counter attack.
Play swung up the other end and Onyedinma again showed the home defence a clean pair of heels as he broke through, but with no-one up in support, had to go for goal himself and saw his angled drive collected by Eastwood low to the keeper's right.
The game started to really open up and Oxford began to pile on the pressure, but with skipper Tony Craig showing all his experience and organisational skills, the home side simply could not find a way through a resolute Millwall rearguard.
There was only one real heart-in-mouth moment deep in the second of five minutes of injury-time when a floated ball by Maguire picked out the unmarked Curtis Nelson who thankfully guided his header straight into Archer's hands.
Bookings: Skarz (26mins), Edwards (52mins), Maguire (68mins)
Scorer: Sercombe (31mins)
Bookings: Romeo (8mins), Thompson (22mins), Ferguson (66mins), Morison (90+2mins)
Scorers: Morison (36mins), O'Brien (49mins)
Ref: R. East
Att: 7,944 (away 934)