Both riders were able to finish safely in a reduced peloton after a fast finishing circuit around Fano produced an incident-packed finale.
Thomas suffered yet more bad luck after being forced into a wheel change with 11 kilometres to go. With the pace high, strong work from Chris Froome, Gianni Moscon and Jonathan Castroviejo ensured he regained contact with the bunch ahead of the run-in.
With Kwiatkowski up front and shepherded by Vasil Kiryienka and Salvatore Puccio, both groups were able to miss a sizable crash which ripped a hole in the peloton.
As expected the day came down to a sprint, with Marcel Kittel (Katusha-Alpecin) narrowly holding off world champion Peter Sagan (Bora-Hansgrohe).
At the earlier intermediate sprint in Fano, BMC Racing combined to deny Kwiatkowski any additional bonus seconds in a three-up sprint, with Greg Van Avermaet and Patrick Bevin taking away the time bonifications.
There was no change on the general classification, meaning Kwiatkowski heads into Tuesday’s deciding 10km time trial with a slender three-second lead over Damiano Caruso (BMC Racing). Thomas sits fourth, 29 seconds off the Maglia Azzurra, and just six back on Mikel Landa’s (Movistar) podium place.