Perez crossed the line 5.3s clear of Verstappen, who spent the final laps charging his battery for a final-tour tilt at the fastest lap – which was ultimately successful as he crossed the line with a 1m31.906s lap.
The Mexican driver had to overcome a setback at the start, in which Alonso trickled through into the first corner to take the lead and settled into first place.
But immediately, Alonso was pinged for starting from the incorrect location, and a swift investigation resulted in the Spaniard taking a five-second penalty having been too far to the left in his starting box.
Despite his lead over Perez briefly getting over a second, Alonso was chased down by Perez at the end of the third lap and, with DRS, the Mexican was able to pull to the inside and make a move to regain the lead at the start of lap four.
Alonso stuck with him in DRS range and, although he never made a charge to reclaim the lead, he was able to sit in Perez’s slipstream for a few laps until he was simply unable to keep within a second of the Red Bull.
From there, the Aston Martin driver tailed off and quickly dropped to 1.6s off Perez by the 11th lap – a deficit that doubled two laps later.
But the race was paused on the 17th lap, as Lance Stroll – who had earlier put a sensational overtake on Carlos Sainz on the opening lap at Turn 13 – crawled to a halt and parked up at Turn 8.
This ultimately brought out a safety car, prompting a flurry of pitstops among the front runners as they traded their medium tyres for the hardest compound.
Fernando Alonso, Aston Martin AMR23, Sergio Perez, Red Bull Racing RB19, George Russell, Mercedes F1 W14
Photo by: Zak Mauger / Motorsport Images
Verstappen was brought on level terms after the safety car restart, having pitted along with the early leading pack, and was initially told to prioritise managing his tyres until DRS was activated on lap 23.
This gave him the tools to dispose of George Russell with DRS into Turn 27, and the Dutchman was subsequently able to catch Alonso in a bid to break into the top two.
Next on Verstappen’s agenda was closing down the 5.4s gap to Perez, and was able to chip about a tenth out per lap – getting it to five seconds by the 30th tour of the circuit as Perez tried to reduce the damage.
The polesitter managed to restore his buffer to about 5.2s on the following lap, as he and Verstappen continued to battle for fastest laps. Although largely matching each other for time, Verstappen was able to continually chip away at Perez’s lead.
As the gap fell below 4.5s, Verstappen began to get worried as he started to feel the driveshaft making strange noises at high speed, which restored Perez’s gap to 5.2s as Red Bull investigated his complaints.
But sufficiently happy, Red Bull told Verstappen to press on – and in the meantime, Perez reported a long brake pedal as the team tried to close out the race.
Once the two were reassured over their issues, Verstappen closed the gap back up to 4.3s as the radio chattered between the Red Bull drivers and engineers began.
Perez attempted to lobby his team into slowing things down as Verstappen continued to push but, once told it was open season, Perez opened the taps and began to flex an advantage over his team-mate having been able to hang in the low 1m32s.
With three laps remaining, Perez’s lead grew to six seconds as Verstappen was instead concerned more about the fastest lap, and the lead grew in Perez’s favour to 7.1s ahead of the final lap.
Max Verstappen, Red Bull Racing RB19, Zhou Guanyu, Alfa Romeo C43
Photo by: Zak Mauger / Motorsport Images
Verstappen then set his 1m31.906s to snatch the fastest-lap point from his team-mate, cutting the gap to just over five seconds to ultimately follow his team-mate home as Perez chalked up a first win since Singapore last season.
Alonso had initially completed the top three, having served his five-second penalty during the safety car period ahead of his pitstop to remain ahead of the chasing Mercedes and Ferrari cars.
Russell was told on the radio to keep Alonso within five seconds, just to cover off the threat of any further penalties, but a mighty last lap from the double world champion left the Briton outside of that margin – and the FIA immediately placed him under investigation for serving the penalty incorrectly due to a member of his team touching the car at the time.
With that, Alonso was hit with a 10-second penalty, moving him down to fourth and promoting Russell into third place.
Lewis Hamilton ensured both Mercedes made the top five, having opted for a contra-strategy in which he started on hards and completed a 32-lap stint on the medium compound.
This ensured he was able to finish ahead of Carlos Sainz, who had earlier used his pitstop to overcut Stroll, having been the object of his sumptuous pass around the outside at Turn 13.
Sainz stayed ahead of Charles Leclerc, who battled through the order after a 10-place penalty left him starting 12th, and the Monegasque was able to make it up to seventh place.
Esteban Ocon won the battle of the Alpines to finish eighth, with Pierre Gasly finishing ninth to repeat his Bahrain result.
Haas got off the mark for the season as Kevin Magnussen completed the top 10, having battled throughout the second half of the race with Yuki Tsunoda over the final point.
The Dane put a move on the AlphaTauri driver at the start of the 46th lap, denying the Italian team the chance to score its first point of 2023.
F1 Saudi Arabian GP race results