The Bahrain-McLaren rider, 24, kicked early and easily held off three-time world champion Peter Sagan in La Chaitre, with Andrea Pasqualon third.
Germany’s Max Schachmann retained his overall lead in the race, which is being held “behind closed doors” because of the coronavirus outbreak.
“It’s amazing to win a stage in a race like this,” said Garcia Cortina.
Leading sprinters Caleb Ewan of Australia and Ireland’s Sam Bennett were caught up in a crash in the finishing straight of the 212.5km route from Chalette-sur-Loing.
“I was surprised to beat Sagan but there was a bit of chaos in the end, I found my space and I went full gas,” added Garcia Cortina, who now has his second professional victory after winning a stage of last year’s Tour of California.
Bora-Hansgrohe rider Schachmann, who won the first stage, is now 13 seconds ahead of stage two winner Giacomo Nizzolo in the overall standings, with Jasper Stuyven 21 seconds back in third.
Stage four on Wednesday is a 15.1km individual time trial in Saint-Amand-Montrond. The race concludes on Sunday.
On Monday, race organisers detailed measures to comply with the French ministry of health’s ban on gatherings of more than 1,000 people in response to the coronavirus outbreak.
Public access is restricted at the start and end of each stage and there is a buffer zone of 100m to the podium at the start of a stage and 300m at the end.
Seven teams pulled out of the race because of concerns over coronavirus, while Team Ineos’ withdrawal was also in part because of the death of sporting director Nicolas Portal.
Stage three result
1. Ivan Garcia Cortina (Spa/Bahrain-McLaren) 5hrs 49mins 55secs
2. Peter Sagan (Svk/Bora-Hansgrohe) Same time
3. Andrea Pasqualon (Ita/Circus-Wanty Gobert)
4. Cees Bol (Ned/Sunweb)
5. Nacer Bouhanni (Fra/Arkea-Samsic)
1. Max Schachmann (Ger/Bora-Hansgrohe) 13hrs 12mins 01sec
2. Giacomo Nizzolo (Ita/NTT) +13secs
3. Jasper Stuyven (Bel/Trek-Segafredo) +21secs
4. Sergio Higuita (Col/EF Pro Cycling) +23secs
5. Nils Politt (Ger/Israel Start-Up Nation) +25secs