Da Costa suddenly slashed the gap to just over a second with four laps remaining, but Lynn kept his focus to take the biggest win of his career in his Theodore Racing-backed Prema Powerteam Dallara-Mercedes.
A sluggish start initially dropped da Costa as low as sixth, but he was up to third by Lisboa, behind Pipo Derani.
Da Costa, the 2012 winner, then passed Derani on the outside into Lisboa after the restart and held second place for the rest of the race in his Carlin Dallara-Volkswagen.
Ten laps in blazing sunshine did not off to the best of starts for Marciello when he was incredibly sluggish getting off the line, and could not keep Lynn or Rosenqvist behind him. Lynn got ahead as the raced down to the Mandarin Oriental bend for the first time, only for Rosenqvist to barge round the outside at Lisboa and go into the lead when Lynn realised he needed to brake hard or he’d be out on the spot.
Alexander Sims was not too far behind Derani, claiming fourth in his T-Sport Dallara-ThreeBond/Nissan.
He was part of a big fight away from the start with Marciello and Felix Rosenqvist, which the Swede promptly exited when he touched the wall at Mandarin Oriental, failing to complete a lap.
In fifth, Carlin-run Macau GP debutant Jordan King claimed fastest lap on the final tour – it was the quickest lap set by anyone over the entire Macau week.
Will Buller, Stefano Coletti and Carlos Sainz Jr were all in the next battle but a collision forced Coletti out and Buller down the field. Jazeman Jaafar came through to take sixth from the recovering Sainz.
From near the back of the grid, Tom Blomqvist stormed through to eighth, with Nicholas Latifi and Esteban Ocon – who dropped to the back on the opening lap but made a fine recovery – completing the top 10.
The safety car was caused by a big crash at Mandarin Oriental on the opening lap. John Bryant-Meisner hit the barriers, while Sean Gelael spun just behind and Lucas Auer ploughed into him.
Results – 15 laps:
Pos Driver Team/Car Time/Gap
1. Alex Lynn Prema Dallara-Merc 37m37.975s
2. Antonio Felix da Costa Carlin Dallara-VW +1.173s
3. Pipo Derani Fortec Dallara-Merc +6.795s
4. Alexander Sims T-Sport Dallara-Nissan +8.203s
5. Jordan King Carlin Dallara-VW +9.573s
6. Jazeman Jaafar Carlin Dallara-VW +15.547s
7. Carlos Sainz Jr Carlin Dallara-VW +16.976s
8. Tom Blomqvist Fortec Dallara-Merc +26.160s
9. Nicholas Latifi Carlin Dallara-VW +29.288s
10. Esteban Ocon Prema Dallara-Merc +30.914s
11. Yuhi Sekiguchi Mucke Dallara-Merc +32.854s
12. Yuichi Nakayama TOM’S Dallara-Toyota +33.790s
13. Will Buller Fortec Dallara-Merc +34.265s
14. Harry Tincknell Carlin Dallara-VW +36.532s
15. Katsumasa Chiyo B-Max Dallara-Toyota +36.902s
16. Antonio Giovinazzi Double R Dallara-Merc +37.584s
17. Nelson Mason Zeller Dallara-Merc +39.877s
18. Dennis van de Laar Mucke Dallara-Merc +1m01.651s
19. Ed Jones Fortec Dallara-Merc +1m29.025s
Lucas Wolf URD Dallara-Merc 14 laps
Kevin Korjus Double R Dallara-Merc 13 laps
Raffaele Marciello Prema Dallara-Merc 9 laps
Stefano Coletti Eurointernational Dallara-Merc 7 laps
Sun Zheng Double R Dallara-Merc 6 laps
Lucas Auer Prema Dallara-Merc 0 laps
John Bryant-Meisner Fortec Dallara-Merc 0 laps
Sean Gelael Double R Dallara-Merc 0 laps
Felix Rosenqvist Mucke Dallara-Merc 0 laps