Canet’s title run took two massive hits in the past two races, after the Spaniard was collected by Albert Arenas at Silverstone and then retired with a bike problem at Misano.
But he dominated at Aragon and, with Dalla Porta only finishing 11th, he is only two points behind the Italian with five races left to run.
Canet led from pole position and was able to break away from the field early on as several riders battled behind him.
By the time Ai Ogura settled into second for several consecutive laps, Canet had a 2.8s lead and the Max Racing Team KTM rider, despite getting a track limits warning, was able to further extend the gap to win by 4.5s.
Second place was fiercely contested among several riders, with rookie Ogura holding the position for most of the time.
He came under pressure from Dennis Foggia late on, the Italian passing him at Turn 4 on the final lap, only to slightly run wide at the end of the backstraight and concede second to Ogura.
The Honda Team Asia rider took the first podium of his Moto3 career while VR46 KTM man Foggia matched his best result in the series with third.
Petronas Sprinta’s John McPhee stole fourth from Alonso Lopez (EG0,0), who was battling for the podium positions for the whole race, on the backstraight of the final lap.
Misano winner Tatsuki Suzuki (SIC58) was sixth with rookie Sergio Garcia (EG0,0) recovering from 29th on the grid to finish seventh.
Angiel Nieto Team’s Albert Arenas, Gresini rider Gabriel Rodrigo and Arbolino completed the top 10.
Snipers rider Arbolino was one of Canet’s closest challengers early on but dropped back in the late stages, battling with Dalla Porta.
While Dalla Porta took the chequered flag first of the pair, he was penalised one position for exceeding track limits and was classified only 11th.
Local duo Jaume Masia and Marcos Ramirez crashed out, the former declared unfit, having suffered a right radius fracture.
Four riders, Romano Fenati, Niccolo Antonelli, Kaito Toba and Can Oncu all missed the race due to injuries sustained at the previous round at Misano.