The Van Amersfoort Racing driver started on reverse grid pole at the Italian circuit and led from the off, holding off an initial challenge from MP Motorsport’s Caio Collet.
But it was Bearman who he needed to worry about, the Prema driver starting seventh before cutting through the field, including a stunning move past both Collet and Jonny Edgar at Turn 1 to take second.
He came within 0.4s of Colapinto but was unable to make the final move for the lead, telling his team on the radio he “thought he had one more lap.”
The nine points mean Bearman moves up to third in the standings with just one race remaining, while championship leader Victor Martins took just one point for finishing 10th.
Isack Hadjar, who sits second in the standings, failed to score after being forced to pit with wing damage.
On the formation lap David Vidales had an engine issue with his car, resulting in the Campos Racing driver being pushed back to the pitlane to start from there.
Colapinto maintained his lead from Collet and Pepe Marti into lap two, while further back Bearman passed team-mate Jak Crawford for sixth on the start-finish straight, before also passing Jenzer’s William Alatalo for fifth place.
The safety car was deployed on lap four as Carlin’s Zak O’Sullivan hit the wall at Turn 1 having locked up trying to avoid the cars ahead.
Racing resumed on lap nine, with the pack having been bunched up before Colapinto released them late.
A tussle ensued for second, with Collet emerging in front as Marti went wide at Turn 2, while Kaylen Frederick and Leclerc made contact at Turn 4.
Bearman snatched fourth from Marti at Turn 2 on lap 10, the latter falling back down the order as he touched the gravel at Lesmo 2.
Despite Crawford briefly passing Bearman at Turn 1, the Ferrari junior retook the position soon after and closed in on Edgar for third.
Bearman then made a dramatic move on Collet and Edgar along the straight, cutting ahead into Turn 1 and embarking on his charge towards Colapinto.
Further back, Leclerc made up two positions, battling Roman Stanek (Trident) for ninth before finding his way up to eighth.
Bearman was within DRS of Colapinto by the penultimate lap, while Collet made it past Edgar for third, the latter also falling behind Zane Maloney to fifth.
Gregoire Saucy took sixth for ART, with Prema team-mates Crawford and Leclerc in seventh and eighth.
Marti and Martins rounded off the top 10, as the Frenchman rescued a point after an ignominious start to the sprint race. Starting in ninth, the ART driver was lining up a move on Prema’s Arthur Leclerc through Curva Grande.
But the pair made contact, forcing Martins across the gravel and dropping him to 27th, with Leclerc falling to 13th.
Fellow title contender Hadjar finished last, creating a significant dent to his title hopes. On the opening lap, the Hitech driver went deep into the Variante della Roggia, taking to the escape road to make it back onto the circuit.
But after the restart, Hadjar made contact with feature race polesitter Alexander Smolyar and received front wing damage, forcing a trip to the pits and putting the Franco-Algerian driver in last.
The final F3 race of the year takes place tomorrow at 7.35am BST, with six drivers mathematically in with a shot of taking the title.