Cavendish, set up by his Omega Pharma-Quick Step team held the advantage over Kittel going in the final 500 yards. But Kittel's Team Argos-Shimano teammates also did a nice job to put in him a prime position.
The two sprinters pushed hard into the final charge with Kittel crossing first, barely in front of Cavendish. They were timed at 4 hours, 49 minutes, 49 seconds, having covered 135.5 miles from Fougeres to Tours.
Peter Sagan came in third with Alexander Kristoff in fourth and Roberto Ferrari fifth.
Froome, who was 14th in Thursday's stage and was given the same finishing time as the leaders, kept his overall lead of 3 minutes, 25 seconds over Alejandro Valverde.
Bauke Mollema is third, 3:37 off the pace, followed by Alberto Contador, 3:54 back, and Roman Kreuziger, 3:57 behind Froome.
Stage 13 Friday takes the riders over a relatively flat stage from Tours 107.5 miles southeast to Saint-Amand-Montrond in central France.
Ukrainian protestors topple Lenin statue [VIDEO]
Selena Gomez drops F-bomb, walks off stage during Jingle Ball performance