The Colombian, 25, pulled away from the pack with Portugal’s Rui Costa with 2km to go before the summit finish.
Henao then moved clear of the Movistar rider to finish three seconds ahead of Costa and four clear of Lieuwe Westra in third.
He is now seven points clear with one stage remaining, although that is a 35km time trial in which he is likely to concede overall defeat.
It completes a good day for the British-owned outfit, with Chris Froome sealing victory at the Tour of Oman earlier.
There were also two other Sky riders in the top 10 with another Colombian, Rigoberto Uran, fourth, and young Brit Josh Edmondson seventh.