The fast bowler snatched three wickets for 18 runs in five overs to put his side in the box seat, after the hosts had set the visitors 404 to win.
The South African accounted for both openers Dominic Sibley and Will Rhodes, along with nightwatchman Olly Stone in a breathless stint, which left Warwickshire on 31 for three at the close on day three.
Earlier, Sam Hain had celebrated his first Specsavers County Championship hundred for three years
The highly-rated batsman needed 196 balls to reach the milestone for the first time since July 2016, before he eventually ended unbeaten on 129.
Predicted Portsmouth XI v Cheltenham: changes expected to side that beat Cardiff so handsomely - but attacking duo could keep places and defender set to return
League One latest: Oxford land former Pompey striker target from Swansea as Sheffield Wednesday bemoan exciting duo's move to Brentford and former Peterborough boss criticises club
Portsmouth transfer news: Blues youngsters attracting interest but Danny Cowley has no desire to cash in just yet
Portsmouth boss Danny Cowley hails Spurs loanee Dane Scarlett as move already shows signs of putting Miguel Azeez's short stint from Arsenal in shade
Former Portsmouth keeper Alex Bass suffers tough night on and off the pitch as he makes Sunderland debut following Fratton Park exit
The previous evening, Gareth Berg declared the morning session as vital to Hampshire’s hopes of winning this game.
They needed seven Warwickshire firs-innings wickets quickly to move the match along and claimed all seven mid-way through the afternoon session, with five coming in a frantic morning session.
Fidel Edwards struck in the 10th over of the day, the fourth with the fresh ball, when Adam Hose was lbw to an in-swinger, before Keith Barker had former team-mate Tim Ambrose caught behind.
Berg and Lewis McManus teamed up twice in an over as both Ben Mike and Henry Brookes edged behind. Edwards then unearthed Jeetan Patel’s off stump.
The one stable constant was Hain, who had batted brilliantly with Rob Yates the previous day and continued that form with an intelligent knock.
Stone added a classy 21 before he was run out by Ajinkya Rahane, while attempting a second run off a misfield, before Oliver Hannon-Dalby edged Felix Organ to first slip.
That meant Warwickshire were bowled out for 307 - 232 runs adrift of Hampshire’s first innings total of 539, but the hosts decided against enforcing the follow-on.
Instead, they gave their pace attack a rest and set about adding runs quickly.
It worked for 10 overs as openers Ian Holland and Organ ticked the score to 45, before they were both castled in consecutive balls, delivered by Hannon-Dalby and Patel respectively.
Rahane and Rilee Rossouw followed quickly, both at the hands of Hannon-Dalby, to leave Hampshire on 52 for four, with the lead only up to 284.
But Donald replicated his first innings eye-catching century with a 41-ball half century – which saw a maximum over deep midwicket – during a 71-run stand with Sam Northeast.
Berg was stumped, McManus, after an entertaining 20, was caught and Barker edged behind before the declaration was made with Hampshire on 171 for eight.
Warwickshire were given a target of 404 to win the match with a minimum of 107 overs left in the game – 11 of which were bowled on a beautifully hot summer’s evening.
Abbott needed just 11 balls to find a ball to nip back into new England Lions call-up Sibley’s off stump.
The former Test bowler then had Rhodes caught low at second slip by Rahane and nightwatchman Stone bowled next ball to reach 41 scalps for the season.