Irish sprinter Sam Bennett has finished third in a Giro d’Italia stage for the second time in three days.

In a thrilling finish to stage seven into Alberobello, Bennett was in elite company, but was pipped on the line by winner Caleb Ewan and squeezed out of second place by Fernando Gaviria, who has been one of the stars of the three-week race so far.

The Carrick-on-Suir man was third in stage five as well as he seeks his maiden grand tour win.

"It was a very sketchy finish, there was a lot of shouldering, but we didn’t do anything wrong," said Bennett about the final sprint, which was technical and through winding streets.

"The guys did a tremendous job for me again today, but I just couldn't get it done at the last moment. Close but no cigar.

"They are doing a fantastic job, riding beyond their years - we are a young crew. They are making the job very easy for me and the gaps easy to find, it's working very well."

The Bora-Hansgrohe rider was ill early in the Giro and struggled through several stages, but he appears to be back to his best.

Bob Jungels of Quick-Step Floor remains in the leader’s pink jersey. Saturday's eighth stage, a 189-km ride between Molfetta and Peschici, is again likely to favour the sprint specialists.

Ewan, the pocket-sized Orica-Scott rider, who had not won since claiming a Tour of Abu Dhabi stage in February, launched the sprint about 300 metres from the line and held off Colombian Gaviria and Bennett.