Messi (left) scored a magical goal after Henry's double
Barcelona withstood a brave Lyon comeback to advance to the Champions League quarter-finals.
Barca looked to be coasting after Thierry Henry's quickfire brace took his tally to 50 Champions League goals.
Lionel Messi bamboozled three defenders on his way to a magical goal and Samuel Eto'o rifled in to make it 4-0.
But Jean Makoun headed in and Juninho - who was later sent off - also struck to make for a dramatic finish before Seydou Keita made sure for Barca.
The hosts were always favourite to advance having secured a 1-1 draw in the away leg, and after a quiet opening 10 minutes, they hit spectacular form.
Their football was at times mesmerising, and Andres Iniesta's return from injury gave the Barca midfield added zip.
Henry gave his side the lead after 25 minutes, latching on to Rafael Marquez's pass and slotting past Hugo Lloris.
Two minutes later, the Frenchman stayed onside to fire a left-foot shot past the Lyon keeper to edge to fourth on the all-time list of Champions League goalscorers.
A packed Nou Camp was in raptures but even better was to come.
Messi chested the ball down on the right, ghosted past three defenders, played a lightning quick one-two with Eto'o and stroked the ball into the far corner.
Lyon were rocked further when Henry played the ball square to Eto'o, who took a touch before smashing a shot past Lloris.
Two minutes later though, the French side pulled one back when Makoun rose unmarked to head home Juninho's corner.
As the second half began, Lyon's task still looked impossible - until Juninho finished off a flowing move, rolling the ball past Victor Valdes after Karim Benzema's clever stepover.
That left them needing two goals to go through and despite a stirring effort, it proved beyond them.
Juninho's frustration was such that he was given a second yellow card for dissent in added time and Keita completed Lyon's misery when he picked up a glorious Xavi pass, rounded the keeper and slotted in a fifth for Barca.
Valdes, Dani Alves, Marquez, Pique, Sylvinho, Xavi, Toure Yaya, Iniesta (Hleb 90), Messi, Eto'o (Bojan 87), Henry (Keita 75).
Subs Not Used: Pinto, Caceres, Busquets, Victor Sanchez.
Henry 25, 27, Messi 40, Eto'o 43, Keita 90.
This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.