The Aprilia rider’s second career grand prix victory came after he threw his RS-GP up the inside of Ducati’s Bagnaia into Maggotts on the final lap and fended him off through the rest of the tour.
A late rain shower turned the final laps into a five-rider battle for the win, with KTM’s Brad Binder completing the podium behind long-time leader Bagnaia.
A brief shower of rain prior to the start of the 20-lap grand prix didn’t stop the entire grid going for slick tyres, with Jack Miller converting second to the holeshot ahead of poleman Marco Bezzecchi.
Bagnaia leaped up to third from fourth at the start before taking second from Bezzecchi at Vale, but didn’t secure the place until carving around the outside of Copse on lap two.
The championship leader then took the lead from Miller into Maggotts, with Bezzecchi giving chase when he cleared the KTM at Stowe.
Bezzecchi and Bagnaia traded fastest laps over the next few laps until the former crashed out on the sixth tour at Stowe.
Behind, a poor exit for Miller at Luffield saw him swallowed up by Gresini’s Alex Marquez and forced off track by Maverick Vinales on the Aprilia at Copse, dropping him down to 14th.
After Bezzecchi’s crash, Bagnaia had Espargaro chasing after the Aprilia rider had passed Alex Marquez on lap five. The Gresini rider’s race ended moments later due to a mechanical issue.
Bagnaia and Espargaro ran line astern, trading fastest laps, as they held a 1.7s gap to the riders in third.
On lap 13, rain started to fall and closed up the lead pack, with Vinales and Binder closing right in on the leaders as RNF Aprilia’s Miguel Oliveira – who started 16th – worked his way towards them.
Chaos ensued as the Aprilia duo and Binder locked horns over second, which stopped Bagnaia’s lead from being assaulted and allowed Oliveira to get closer to the podium.
At the end of lap 15, Yamaha’s Franco Morbidelli, Gresini’s Fabio Di Giannantonio and LCR Honda stand-in Iker Lecuona pitted for their wet bikes.
Despite seemingly worsening conditions, that wasn’t enough to tempt the leaders to come in for wet tyres.
Espargaro returned to second on lap 17 with a pass on Binder at Village, with the Spaniard setting off in his pursuit of Bagnaia while the KTM rider came under attack from Vinales and Oliveira.
Bagnaia led to start the final lap with Espargaro on his exhaust pipe, the Aprilia not quite close enough to execute a move in the first half of the lap.
Getting a good run through Copse, Espargaro drew alongside Bagnaia on the exit and scythed past the Ducati on the inside into Maggotts.
Espargaro kept his line defensive through the last corners to keep Bagnaia at bay by 0.215 seconds to score Aprilia’s first win of the season.
Binder held onto third by 0.070s to Oliveira as Vinales completed the top five, while Pramac’s Jorge Martin was 5.8s further behind in sixth.
Luca Marini was seventh on the sole-remaining VR46 Ducati, with Miller recovering to eighth ahead of Johann Zarco (Pramac) and RNF’s Raul Fernandez – marking his first top 10 MotoGP result.
Augusto Fernandez faded from fifth on the grid at the start to 11th at the chequered flag, as returning Tech3 team-mate Pol Espargaro scored points in 12th ahead of Di Giannantonio, Morbidelli and Yamaha team-mate Fabio Quartararo.
Quartararo ran as high as seventh having started last at one stage, but a collision with Marini on lap 18 forced him to box for his wet bike and dropped him to 15th.
Takaaki Nakagami (LCR) and Lecuona were the last classified finishers.
Honda’s Marc Marquez crashed out on lap 15 after running into the back of Ducati’s Enea Bastianini at Becketts.
Bastianini had a separate fall moments later at Stowe. Joan Mir on the second factory Honda crashed out on lap three.
Bagnaia leads the standings by 41 points now from Martin, with Bezzecchi 47 adrift.