In wet conditions, Irwin was narrowly denied his first victory of the season after he was edged out by JG Speedfit Kawasaki rider Leon Haslam on the final lap.
The race was initially red flagged due to rain, when Donington double winner Bradley Ray was holding the advantage on the Bennetts Suzuki.
From the restart, it was Haslam who led the way from Richard Cooper (Bennetts Suzuki) and Tyco BMW’s Christian Iddon, with Jake Dixon on the RAF Reserves Kawasaki also in close contention.
As the lead changed hands at the front, Cooper was caught out at Clearways, while Laverty was now on the move on the Tyco BMW.
He took the lead from Haslam on lap nine, with Irwin now beginning to enter the frame on the PBM Be Wiser Ducati. The rain claimed another victim as Dixon was ruled out after coming off at Graham Hill Bend.
Irwin was now challenging Laverty for the lead after passing Haslam as the front three pulled a gap over the chasing pack. The Ulster rider edged past Haslam at Druids on lap 20, but there was another twist in the tale as Haslam hit back to snatch the lead on the last lap, holding on for a hard-fought victory.
Laverty rounded out the top three with Shane Byrne fourth on the PBM Be Wiser Ducati.
Josh Brookes (McAMS Yamaha) and Christian Iddon (Tyco BMW) were the top six, with Ray crossing the line in seventh ahead of Tommy Bridewell.
Lisburn’s Carl Phillips scored his first BSB points after a brilliant ride by the series rookie on the Gearlink Kawasaki to take 10th place.
In the Pirelli Superstock 1000 Championship, EHA Racing’ Andy Reid finished third in race two on the Aprilia, with Alastair Seeley fifth on the WD40 Kawasaki. Ballinamallard’s Josh Elliott was eighth (Morello Kawasaki).
Reid, who won Saturday’s first race, is second in the championship standings, 16 points behind Billy McConnell (Bennetts Suzuki).
Dublin’s Jack Kennedy won both British Supersport races, with David Allingham finishing eighth and 12th. Robert Kennedy was 13th in the Sprint race on Saturday and claimed an excellent fifth in Sunday’s race.
In the Junior Supersport class, Eunan McGlinchey won Saturday’s race and twice finished as the runner-up on Sunday.
Eugene McManus was sixth in Sunday’s Motostar race, while in the Superstock 600 event, McAdoo Kawasaki’s Adam McLean finished on the podium in third.