Kwiatkowski, who won the Strade Bianche recently, outsprinted breakaway companions Sagan and Alaphilippe on the Via Roma to win the 291km one-day classic in 7:08:39.
The decisive move came 6km from the finish when Sagan attacked half way up the Poggio and drove the pace to the top and down the other side.
With the other two forcing Sagan to do the bulk of the work on the flat run-in to finish, the double world champion was forced to lead out the sprint from far out. However, he faded in the closing metres allowing Kwiatkowski to take the win on the line.
Former champion Alexander Kristoff led the bunch over the line in fourth place, five seconds behind.
One of the pre-race favourites Fernando Gaviria, the current Olympic omnium champion, was fifth despite crashing 48 hours before the race and sustaining an injury to his wrist.
Defending champion Arnaud Demare could only secure a sixth place finish.
Edvald Boasson Hagen, who placed 19th, was the first Dimension Data rider to finish.
See top 20 finishers.