Poland's Maciej Bodnar was caught in the final 300 metres in Pau, having led for the rest of the 203.5km route.
German Kittel surged passed his rivals, with Dutchman Dylan Groenewegen second and Edvald Boasson Hagen third.
Froome leads by 18 seconds overall from Italy's Fabio Aru and is 51 seconds ahead of Romain Bardet in third.
Britain's Daniel McLay finished fifth in the stage, with compatriot Ben Swift in ninth.