Jorge Martin hit the front in the first lap and never relinquished his lead to win the Portuguese MotoGP on Sunday, in the second race of the season.
Enea Bastianini was second and teenage rookie Pedro Acosta third.
Martin took top spot in the standings from champion Francesco Bagnaia who crashed out after a collision with Marc Marquez in the wild final stages.
Bastianini, on a factory Ducati, started on pole but Martin, third at lights out, quickly took the lead on his Pramac Ducati going into turn one and dominated the race.
Martin, runner-up to Bagnaia in the championship last season, suffered a horror crash at Portimao in 2021 from which he needed several surgeries to recover.
“Today I had no problems and I felt great… winning again is fantastic and I feel very competitive,” Martin told DAZN.
“I was very focussed on the start, I knew it would be the key.
“I am happy because I’ve worked a lot… on every detail to feel 100 percent.”
The exciting 19-year-old Acosta, on a Gasgas-Tech3, seventh in qualifying, overtook Brad Binder’s KTM and then six-time MotoGP world champion Marquez on a Fresini Ducati, to move into fifth.
Italian defending double world champion Bagnaia kept Acosta at bay for a while, but the young Spaniard passed and gained a maiden podium after Maverick Vinales crashed out.
“The team has done an incredible job,” a delighted Acosta told DAZN.
“It’s the first podium and look at all these people, today is the day of Gas Gas red.
“Thanks to all the team, we knew it would not be easy but now we have the first podium in the bag.”
Bagnaia, who took the season-opener and had won on the Algarve in 2021 and 2023, was chasing a 20th victory, but Martin stayed comfortably ahead of the chasing pack.
The final laps were chaotic, with Bagnaia and Marquez colliding at turn five and Vinales crashing because of an apparent technical issue on his Aprilia.
The team later said it was “presumably” a gear box issue.
With the Argentine MotoGP cancelled, the next race is in Austin, Texas, across April 12-14.
Martin leads the standings on 60 points from Binder with 42 and Bastianini on 39.