Leading by 35 points midway through the second quarter, the Cats' advantage disappeared as Richmond came alive after halftime to grab a 17-point buffer early in the final quarter at the MCG.
But the lead would still change multiple times, with Maurice Rioli Jr calmly slotting a set-shot with two minutes remaining to put the Tigers back in front.
However, the Cats then burst out of the centre clearance with Henry, playing his first game since round five, flying high to grab a spectacular mark.
The 23-year-old went back from 15m out to nail the Cats' 10th win of the season as Geelong held on for a rousing 13.11 (89) to 13.8 (86) win to jump into second on the ladder.
Richmond bravely fought back into the game after Geelong booted seven of the first nine goals, with the Tigers losing star midfielder Dion Prestia to concussion in the first quarter.
Prestia was dazed and confused after receiving a forceful elbow from All-Australian Geelong defender Tom Stewart.
The triple premiership star had tapped a loose ball to Tigers teammate Jack Graham before Stewart came in late and clipped Prestia with his elbow.
Prestia was helped off the ground by trainers and replaced in the match by Richmond big man Ivan Soldo.
The incident is certain to attract attention from the match review officer and Stewart will be facing a hefty suspension of four weeks or more.
Stewart was in deep conversation with Cats coach Chris Scott during the quarter-time break as the 29-year-old appeared to be upset with his actions.
He was booed by the Tigers faithful every time he went near the ball but still played a crucial role in the Cats' victory, including taking a big contested mark near Richmond's goals in the dying seconds.
Cats star Jeremy Cameron booted three goals in his 200th AFL game, as did resurgent small forward Tyson Stengle.
For the Tigers, Shai Bolton and Tom Lynch were outstanding with three goals each.
Geelong are at home to lowly North Melbourne next Saturday night, while the Tigers will be back at the MCG to face strugglers West Coast on Sunday.