France's Julian Alaphilippe won a bunch sprint in Monday's sixth and penultimate stage of the Tirreno-Adriatico cycling race over 195km from Matelica to Jesi.
The 26-year-old crossed ahead of Italians Davide Cimolai (Israel Cycling Academy) and Deceuninck-QuickStep teammate Elia Viviani, who were second and third respectively.
"I'm not a sprinter but I know I can sprint well on a hard day like this," said Alaphilippe after his second win after his stage two triumph.
"With one lap to go, Elia Viviani asked me if I wanted to go for the sprint.
"I said 'I'll be your last lead out man'. Max Richeze pulled hard and I just relayed him till the line.
"I'm just really happy with this incredible victory."
A seven-man break of formed from early in the race building up a lead of three minutes on the peloton.
Ballerini was the last survivor before being reeled in by Deceuninck-QuickStep whose riders powered forward in the closing kilometres in support of Viviani.
But it was Alaphilippe who surprised the favourites including Peter Sagan, who finished fifth, as Viviani found a around the Slovak to finish third.
Britain's Adam Yates of Mitchelton-Scott holds the leader's blue jersey going into Tuesday's final stage in the 'Race of the Two Seas'.
"The last kilometre was pretty much uphill," said 26-year-old Yates.
"We know Alaphilippe can sprint on a road like this one. Maybe a couple of years ago, I could have done it too.
"I'm not so punchy any more. I hope to create a surprise tomorrow but the time trial doesn't suit me and the gap isn't big enough, but I'll do my best."
Favourite to win the race is Slovenian Primoz Roglic of Team Jumbo-Visma who is 25sec behind Yates with Astana's Jakob Fuglsang third at 35sec going into the final 10km individual time-trial down the flat Adriatic seafront at San Benedetto del Tronto.