Middlesbrough booked their place in the last four of the FA Cup following a thrilling replay win over Charlton.
Morrison gave Charlton many problems
Boro took the lead through Fabio Rochemback's 30-yard free-kick which deceived keeper Thomas Myhre before Bryan Hughes equalised with a volley.
James Morrison restored Boro's lead from close range and Jimmy-Floyd Hasselbaink added a third.
Charlton made it 3-2 thanks to Gareth Southgate's own goal before Mark Viduka sealed the win for the home side.
Charlton came out of the traps faster than their hosts and should have been two goals up in the first five minutes.
They found the Middlesbrough backline in charitable mood, but strikers Shaun Bartlett and Darren Bent failed to covert the chances that came their way.
Bartlett's tame header was tipped away by Mark Schwarzer before Bent directed a two-yard effort into the body of the Boro keeper.
The visitors were left to rue those misses when Brazilian Rochemback struck a low 30-yard free-kick that skipped past Myhre, who reacted too late before diving to his right.
But within seconds of the roar of celebration from the home fans, Charlton had equalised.
The Middlesbrough defence was once again outjumped by Bartlett, whose header was met with a well-directed volley inside the area from Hughes.
In a topsy-turvy first half, Steve McClaren's men regained advantage through 19-year-old Morrison.
The teenager came out on top in a messy tussle inside the Charlton area to poke the ball past Myhre.
Both teams appeared to tighten up at the back after the interval, but the game opened up again after Hasselbaink smashed in Boro's third.
The two-goal advantage lasted just three minutes before Charlton substitute Jay Bothroyd saw his shot bounce off former England defender Southgate and into the Boro net.
Charlton's joy was short-lived as Middlesbrough charged down the other end and grabbed their fourth thanks to some sublime skill from Viduka.
The Australia international jinked past two defenders to unleash an unstoppable shot past Myhre.
Boro will now play West Ham at Villa Park on Sunday 23 April, with the kick-off at 1600 BST.
Middlesbrough: Schwarzer, Parnaby, Riggott, Southgate, Taylor, Morrison, Boateng, Rochemback, Downing, Viduka, Hasselbaink (Ehiogu 80).
Subs Not Used: Jones, Doriva, Maccarone, Yakubu.
Goals: Rochemback 11, Morrison 26, Hasselbaink 73, Viduka 77.
Charlton: Myhre, Spector, Hreidarsson, Perry, Powell, Rommedahl, Kishishev (Euell 78), Holland (Thomas 59), Hughes, Darren Bent, Bartlett (Bothroyd 61).
Subs Not Used: Andersen, Sorondo.
Goals: Hughes 13, Southgate 76 og.
Ref: Philip Dowd (England).