The Polish rider made his move on the final climb of the 254km race, timing his effort to perfection to hold off a stellar six-strong chase group.
Australia's Gerrans beat Alejandro Valverde in the sprint for second, handing the Spaniard his second bronze medal in as many years.
"I was feeling great on the last lap," said 24-year-old
Kwiatkowski who races for the Omega Pharma-Quick-Step team.
"Two days ago I was watching the under 23 race and I knew it was possible to arrive in a small group at the finish. Especially with the rain we had today, it was really risky. I took a risk because I saw some of the riders still calculating before the last climb. I did my effort on the last climb and I had a little bit of a gap on the other riders.
"I'm really thankful to my team-mates, for what they did from the beginning. It was just incredible."
It took eight kilometres for a move to establish itself in the 14-lap race, with Zydrunas Savickas (Lithuania), Carlos Quintero (Colombia), Matja Kvasina (Croatia), and Oleksander Polivoda (Ukraine) quickly riding out to a 15 minute lead.
It was Kwiatkowski's Polish team that took responsibility for the early chase, patrolling the front of the peloton while protecting their lead rider.
With 90km and five laps to go, the breakaway's advantage was down to seven minutes and falling steadily.
Quintero attacked in an attempt to prolong the catch, however the inevitable came at the 60km mark, causing a reshuffle of the peloton.
A group of 13 riders took up the lead at the front of the race, with Germany's Tony Martin attacking the front group with 55km remaining.
Martin engaged his time trial skills, but could only keep the chasers at bay for a short time, and was caught over the top of the climb by the 12-rider chase group.
With many of the most competitive nations, including Germany, Belgium, Italy and Spain, represented in the front of the race, it was up to the Australians to close the 30 second gap that existed with three laps remaining.
The peloton was only 29 seconds behind at the start of the penultimate lap with the race coming together shortly after with the break having lost its impetus.
With 30km to go, Alessandro de Marchi (Italy), Cyril Gautier (France) and Michael Valgren Anderson (Denmark) forged a 30 second advantage. The trio drew their lead out to 48 seconds with only 20 kilometres left.
Belarussian Vasil Kiriyenka bridged to the leaders at the beginning of the final lap, with the splintered peloton hearing the bell as they crossed the finish line 36 seconds later.
The Spaniards lead the chase, with the leaders still 13 seconds in front only 10 kilometres from the line.
Kwiatkowski launched his move as he turned the corner onto the dam with seven kilometres left, and he easily bridged to the leaders.
As the road kicked upwards again, he applied the pressure, with none of the other leaders able to stick to his wheel.
An attack by Valverde with five kilometres to go resulted in a chase group that included Gerrans, former world champion Philippe Gilbert and his Belgium team-mate Greg van Avermaet, Tony Gallopin (France) and Matti Breschel (Denmark).
Kwiatkowski clung to a seven second lead at the two kilometres mark, as Gilbert lead the chase group in pursuit of the rainbow jersey on offer.
The Pole was able to take one last look behind him before he celebrated his victory as the sprint for the remaining medals opened behind him.
"I went full gas and I made it after a really risky attack," said Kwiatkowski. "In the end, it worked, and I am going to celebrate this victory.
"I also want to thank Omega Pharma Ã¢â¬â Quick-Step as they have always had confidence in me and because of this growth as a rider with them, I believed I could win with this kind of attack on the last lap."
Elite Men: 254km, Ponferrada
1 Michal Kwiatkowski (POL) 6hr 29min 07sec
2 Simon Gerrans (AUS) 0:00:01
3 Alejandro Valverde (ESP)
4 Matti Breschel (DEN)
5 Greg Van Avermaet (BEL)
6 Tony Gallopin (FRA)
7 Philippe Gilbert (BEL) 0:00:04
8 Alexandr Kristoff (NOR) 0:00:07
9 John Degenkolb (GER)
10 Nacer Bouhanni (FRA)