La carrera de Moto 3 arrancó con John McPhee desde la pole, tras la sanción de 12 posiciones a Jorge Martín, además de a Pagliani y Toba, por rodar excesivamente lentos durante la tercera sesión de entrenamientos libres.
En la salida, Di Giannantonio fue el más fuerte para pasar primero por la curva de San Donato, delante de Fenati, Suzuki, Mir, McPhee, Ramírez, Martín, que remontó pronto, Antonelli y Bendsneyder. En el primer giro, Fenati pasó al ataque y se colocó primero, pero Di Giannantonio respondió en la recta de meta y pasó en cabeza gracias al rebufo de la larga recta de meta en Mugello.
En los primeros compases, Jorge Martín pasó al ataque para continuar con su remontada y pronto subió a posiciones de podio, en tercera posición por delante de Joan Mir, líder del Mundial, y tras Fenati y Di Giannantonio. El grupo de cabeza se completó con Ramírez, Suzuki y McPhee.
Posteriormente, el grupo perseguidor comenzó a rodar más rápido que cabeza de carrera, por lo que muchos más pilotos, hasta 20, aproximadamente, conformaron un pelotón delantero, uniéndose a los anteriores hombres como Canet, Migno, Bendsneyder, Bulega o Darryn Binder, quien, a 16 vueltas del final, llegó a puestos de podio, luchando con Fenati, Mir y Di Giannantonio.
La carrera siguió. Hasta 13 pilotos intentaron diferenciarse del resto, entre los que se encontraban prácticamente todos los favoritos al título mundial. En cabeza, querían mantenerse dos pilotos locales, Fenati y Di Giannantonio, aunque hubo otros, como Mir y Migno, que tomaron el relevo.
Los siguientes giros siguieron la tónica habitual: muchos cambios en cabeza, pasando a liderar Bnder o Ramírez, entre otros, y los pilotos perseguidores intentando uniéndose a cabeza de carrera, aunque no terminaban de conseguirlo. Mientras, en la recta de meta seguían cambiándose las posiciones, al igual que sucedía en la primera curva. Mientras, en la parte baja de la clasificación, Jules Danilo sufrió la primera caída a 11 vueltas del final, mientras que Santoni, piloto invitado, tuvo que retirarse.
Con el paso de las vueltas, Mir trató de llevar a cabo una estrategia: salir bien de la última curva, Bucine, aguantar en el Rettilineo e intentar pasar primero por la curva de San Donato, algo que llegó a conseguir, aunque pronto Di Giannantonio, Ramírez y Fenati pasaron al ataque para evitarlo.
La prueba empezó a acercarse a su tramo final. Pilotos como Bulega, Canet o Bastianini trataron de ganar posiciones en los últimos giros para posicionarse de cara al final, mientras que el líder seguía siendo aleatorio en cada vuelta, debido al rebufo en la recta de meta.
A 4 vueltas del final, Guevara pasó a la primera posición, delante de Migno y Di Giannantonio. Justo por detrás, comenzaron los toques con Darryn Binder como protagonista y Suzuki como afectado. Pilotos como Bulega y Fenati cayeron varias posiciones, más allá del Top 10.
Los cambios en la clasificación fueron constantes hasta el final. La carrera siguió teniendo líderes inéditos, como Guevara, Oettl o Canet. Así, la victoria pasó a ser una lotería al rebufo en el último giro, entre un muy numeroso grupo delantero.
Y llegó la última vuelta. Andrea Mgno y Di Giannantonio pasaron a liderar y tiraron, marchándose del grupo trasero, en el que lideraba Guevara. Finalmente, el piloto del Sky pasó primero por la última curva y consiguió aguantar en la recta, para conseguir su primer triunfo en la categoría pequeña. Detrás, completaron el podio Di Giannantonio y Guevara, que firma su mejor resultado en Moto 3. De esta forma, KTM rompe la hegemonía de Honda, tras copar las 15 posiciones de podio en juego desde Qatar.
Completaron la zona de puntos Binder, Canet, McPhee, Mir, Sasaki, Ramírez, Bulega, Bastianini, Bendsneyder, Fenati, Oettl y Martín. Por detrás, quedaron Antonelli, Bezzecchi, Norrodin, Dalla Porta, Kornfeil, Arbolino, Pagliani, Loi, Atiratphuvapat, Toba, Herrera y Pulkkinen.