Michal Kwiatkowski (Team Sky) took a dramatic victory in the 2017 edition of Milan-San Remo, narrowly edging out world champion Peter Sagan (Bora-Hansgrohe) and Julian Alaphilippe (Quick-Step Floors) in a three-up sprint for the line.
The three riders had gone clear on the final climb of the Poggio, where Sagan launched his attack with just over a kilometre to the top of the climb.
The Slovakian rider briefly opened a gap, with Alaphilippe and Kwiatkowski digging deep to claw their way onto his back wheel
At the top of the climb, with 5.4km remaining, the gap was around 10 seconds, which only grew as Sagan carved his way down the technical descent towards the seaside resort of San Remo.
By the flamme rouge it was clear that the win would be contested by these three riders, and although Sagan must surely have fancied his chances in a sprint against Alaphilippe and Kwiatkowski, he found himself in the worst possible position, leading into the final 500m.
A few desperate flicks of the elbow yielded nothing from his two rivals, meaning that Sagan was forced to gradually raise the pace from the front of the group.
It wasn't the ideal scenario for the world champion, but for a moment it looked as if he would be able to pull off a long sprint success, before Kwiatkowski came around Sagan's left hand side on the Via Roma.
The final few metres to the line were agonising, and as both men threw their bikes towards the finish it was unclear who had won, with the two riders even knocking shoulders crossing the line.
But the photo finish showed a narrow victory for Kwiatkowski, with Sagan missing out by less than half a wheel, Alaphilippe in third, and the bunch, led in by Alexander Kristoff (Katusha-Alpecin) coming home five seconds behind.
How it happened
The 2017 edition of Milan-San Remo got underway under clear skies in Italy's financial capital, and once Milan's tram tracks had been safely navigated, a ten-rider break escaped almost straight from the drop of the flag
As expected the break included a strong Italian contingent, with all four of the Italian teams in the race putting men in the break.
The move consisted of Nico Denz (Ag2r La Mondiale), Mattia Frapporti (Androni Giocattoli), Mirco Maestri (Bardiani-CSF), William Clarke and Toms Skujins (Cannondale-Drapac), Ivan Rovny (Gazprom-Rusvelo), Alan Marangoni (Nippo-Vini Fantini), Umberto Poli (Novo Nordisk), Federico Zurlo (UAE Team Emirates), Julen Amezqueta (Wilier Triestina).
Slightly surprisingly the break was not given a long leash, with the peloton keeping them within four minutes as the race made its way across the vast, flat plains of the Po Valley, heading south west towards the Passo del Turchino, where it would climb up before plunging down to the Mediterranean coast for the second half of the race.
By the time the leaders reached the coast their advantage was still hovering around the four minute mark, before steadily falling as FDJ, Quick-Step Floors, and Team Sky shared the work on the front of the peloton.
With 60km remaining, as the break reached the first of the Tre Capi, three climbs over headlands along the coast, the gap dropped towards a minute and a half.
The pattern looked set for the next few kilometres, but Ag2r La Mondiale hadn't read the script, with Alexis Gougeard attacking off the front of the peloton on the Capo Cervo with 45km to go. Unsurprisingly there was no reaction from the peloton, as Gougeard quickly took 20 seconds on the main group, but still found himself a minute behind the break.
But the move didn't last long, with the Frenchman struggling on the next climb of the Capo Berta, getting caught by the peloton.
Up front and distance was starting to bite, with Poli, Frapporti, and Zurlo being dropped on the Capo Berta, leaving seven men in the break with an advantage that had shrunk to less than a minute.
The next obstacle on the route was the penultimate climb of the day: the Cipressa. 5.6km long with an average gradient of 4.1 per cent and a maximum gradient of nine percent, it would provide the first real launching pad for an attack, which meant a steady ramping up of the pace as different teams raced to be the first through the right-hand turn and under the arch which signals the start of the climb.
The raising of the pace meant the the gap to the break tumbled, and by the time Team Sunweb led the peloton on to the climb the early break was over.
There wasn't so much of an attack on the Cipressa, but Nikias Arndt (Team Sunweb) set a searing pace on the front to pulling a small group off the front. There was a moment of panic as Luke Rowe (Team Sky) tried to jump across, but BMC led the main group back.
But no sooner had that move been caught than Tim Wellens (Lotto-Soudal) launched a counter-attack, which was shutdown once again by the combined forces of BMC Racing and Sunweb.
With Simon Geschke and Tom Dumoulin setting a steady pace on the front any more attackers were deterred. Meanwhile Mark Cavendish (Dimension Data) was one of those dropped, with only 50 and 60 riders still in the front group by the time the race reached the top of the Cipressa, and pre-race favourites Peter Sagan, Fernando Gaviria, John Degenkolb, Ben Swift, and defending champion Arnaud Démare all looking comfortable towards the front.
After a group of ten or so riders briefly opened a small gap after the descent off the Cipressa there was another chance for riders to catch their breath as Bora-Hansgrohe put a few riders in front of Peter Sagan to control the front of the peloton.
That gave an opportunity for the peloton to grow once again as riders dropped on the Cipressa were able to regain contact, but not including Cavendish.
But no sooner had the pace slackened than it was raised once again as the group raced on to the peloton, with Tom Boonen, riding his last Milan-San Remo before retirement, riding prominently in support team-mate Gaviria, but with Luke Rowe of Team Sky leading on to the Poggio.
Tom Dumoulin was the next man to hit the front, leading four Team Sky riders and Peter Sagan at the head of the peloton, and setting such a fierce pace that the bunch was strung out in single file, with no one willing to attack on the first half of the climb.
But as the Dutchman started to tire the pace slackened slightly, and as Sky went back to the front Peter Sagan attacked.
The move was unexpected and no one was able to immediately jump onto the world champion's wheel, with Julian Alaphilippe and Michal Kwiatkowski painfully clawing themselves across.
By the top of the climb and the trio had opened a gap of around 10 seconds to the peloton, led by Bahrain-Merida and BMC Racing.
The technical descent off the Poggio was perfect for Sagan, and the Slovakian didn't ask for any help on the way down, carving through the corners the edge the gap out towards 20 seconds by the end of the downhill and the flat final two kilometres to the line.
With Sagan in the group Kwiatkowski and Alaphilippe may not have been expected to help the Slovakian, and while Kwiatkowski put in a few turns, Alaphilippe chose to sit in.
Under the flamme rouge and Sagan was in the worst position, leading the trio into the final 500m and steadily raising the pace.
Even from such an unfavourable position you would still find it hard to bet against Sagan, and as the Slovak opened his sprint he was able to open a small gap over his two rivals.
But Kwiatkowski agonisingly closed back on to Sagan's back wheel, winching his way up on the left-hand side of the road to take victory in a narrow photo finish.
Milan-San Remo 2017: Milan to San Remo (291km)
1. Michal Kwiatkowski (Pol) Team Sky, in 7-08-39
2. Peter Sagan (Svk) Bora-Hansgrohe, at same time
3. Julian Alaphilippe (Fra) Quick-Step Floors, at same time
4. Alexander Kristoff (Nor) Katusha-Alpecin, at 5 secs
5. Fernando Gaviria (Col) Quick-Step Floors
6. Arnaud Démare (Fra) FDJ
7. John Degenkolb (Ger) Trek-Segafredo
8. Nacer Bouhanni (Fra) Cofidis, Solutions Credits
9. Elia Viviani (Ita) Team Sky
10. Caleb Ewan (Aus) Orica-Scott, all at same time
Thank you for reading 20 articles this month* Join now for unlimited access
Enjoy your first month for just £1 / $1 / €1
*Read 5 free articles per month without a subscription
Join now for unlimited access
Try first month for just £1 / $1 / €1