The Toomebridge rider lies ninth in the overall standings on 28 points, having scored points in every round to date.
Laverty, 29, charged into ninth place on the opening lap on his Aspar Ducati, then made it up to eighth, before being overtaken by Spaniard Pol Espargaro.
Valentino Rossi was a start-to-finish winner, with Jorge Lorenzo in second.
Pole position man Rossi enjoyed a two-second advantage over his Yamaha team-mate at the chequered flag, with Honda pair Marc Marquez and Dani Pedrosa taking third and fourth places respectively.
Marquez leads the championship by 17 points from Lorenzo, with Italian Rossi a further 17 points behind in third.
Laverty lapped consistently throughout, with Espargaro coming past with 16 laps to go, but failing to significantly increase the gap between the two.
Laverty ended only 1.5 seconds behind the Spaniard and although Hector Barbera tried a last-lap attack on the former World Superbike rider, he couldn't make it stick.
Laverty was 12th in the previous round, the Grand Prix of the Americas in Austin, having clinched his best-ever result of fourth in Argentina a week earlier.
He also occupied 12th spot in the season opener in Qatar.
Eugene Laverty secured another seven points in the MotoGP championship by finishing ninth in the fourth round of this year's series at Jerez in Spain.