Albert Timmer (Giant-Shimano) hung on from being in the day’s break to claim second, with Dylan Teuns (BMC) in third.
Kwiatkowski now leads stage three winner Edoardo Zardini (Bardiani) by three seconds, with Teuns in third at 14 seconds. Defending champion Bradley Wiggins (Sky) sits in sixth overall at 27 seconds.
Alex Dowsett (Movistar) kicked off the day’s escape group, and was eventually joined by eight other riders: Lasse Hansen (Garmin-Sharp), Peter Velits (BMC Racing), Albert Timmer (Giant-Shimano), Kristian House (Rapha Condor), Mike Northey (Madison-Genesis), Sam Harrison (NFTO), Mark Christian (Raleigh) and Sebastian Lander (BMC Racing).
Bad luck struck Dowsett later, when he suffered a simultaneous front and rear wheel puncture and lost over a minute as his wheels were changed. He fought hard to regain contact with the break, but in the end decided to conserve his energy, sat up and was caught by the bunch.
In the final 9km, Timmer, Velits and Hansen attacked their breakaway companions as the peloton drew within a minute of them. By the time they hit the bottom of the final climb up the Avon Gorge, the gap was only 30 seconds.
Timmer attacked up the climb, as Jack Bauer (Garmin-Sharp) launched himself out of the peloton and caught him. Kwiatkowski bridged up to them as the pair appeared to ease their pace in the final kilometre, and passed them to take the win. Timmer banged his handlebars in disgust at having missed out in the final few metres after such a mammoth effort.
Tour of Britain 2014, stage four: Worcester to Bristol, 184.6km
1. Michal Kwiatkowski (Pol) Omega Pharma-QuickStep
2. Albert Timmer (Ned) Giant-Shimano
3. Dylan Teuns (Bel) BMC Racing
4. Jack Bauer (NZl) Garmin-Sharp
5. Jon Izaguirre (Spa) Movistar
6. Nicolas Roche (Irl) Tinkoff-Saxo at same time
7. Ben Swift (GBr) Sky at 6 secs
8. Rick Zabel (Ger) BMC Racing
9. Sonny Colbrelli (Ita) Bardiani
10. Sylvain Chavanel (Fra) IAM Cycling at same time
Overall classification after stage four
1. Michal Kwiatkowski (Pol) Omega Pharma-QuickStep in 15-49-33
2. Edoardo Zardini (Ita) Bardiani at 3 secs
3. Dylan Teuns (Bel) BMC Racing at 14 secs
4. Nicolas Roche (Irl) Tinnkoff-Saxo at 14 secs
5. Jon Izaguirre (Spa) Movistar at 23 secs
6. Bradley Wiggins (GBr) Sky at 27 secs
7. David Lopez (Spa) Sky at 27 secs
8. Leopold Konig (Cze) NetApp-Endura at 29 secs
9. Sebastien Reichenbach (Swi) IAM Cycling at 29 secs
10. Giovanni Visconti (Ita) Movistar at 40 secs
Defending champion believes race could be won and lost on time bonuses, as opposed to Sunday's ITT.