Grasshoppers took the lead when Joao Pedro Paiva scored after four minutes but strikes from Valentin Stocker and Jacques Zoua put Basel ahead at the break.
Frank Feltscher's own-goal made it 3-1 before a staggering run of four goals in as many minutes between the 69th and 73rd minutes, Basel scoring through Alexander Frei and Benjamin Huggel and the visitors replying through Paiva's second and Steven Zuber. Zoua scored his own second to end the scoring in the 81st minute.
Second-placed Lucerne beat Lausanne Sports 3-2 in another game where goals arrived in a cluster. The match was goalless at the break, with Florian Stahel ending the stalemate in the 64th minute.
A run of four goals in 12 minutes followed, with Nelson Ferreira scoring in the 85th and 87th minutes and Figueiredo Gleidionor and Jocelyn Roux on target for Lausanne. The visitors could not summon an equaliser and instead lost Jerome Sonnerat and Ibrahim Tall to red cards in the closing seconds.