In Milan, Florence and Ferrara they waited. In Rome and Reggio Emilia, too. The final six games of the Serie A season had been scheduled to kick off simultaneously, to ensure a level playing field for teams chasing a Champions League berth, as well as those fighting against relegation. But somebody, somewhere, was late.

Referees tutted and glared at their watches, waiting for the signal to commence. Ultras completed their planned choreographies and wondered what to do next. Players bounced and bellowed at one another. It was not exactly quiet before the storm, yet there was a moment of exquisite tension shared hundreds of miles apart.

Atalanta and Inter sat level on points, occupying third and fourth in the table. Milan were one behind. Their matches eventually got under way at 8.35pm, five minutes later than planned. By 8.55pm, Atalanta were behind.

The Bergamese club were at home to Sassuolo, yet playing at Sassuolo’s ground. Atalanta arranged long ago to relocate to the Mapei Stadium for the final part of this season, in order to begin renovation work at their Stadio Atleti Azzurri d’Italia. Few imagined then that a team with the 14th-largest wage bill in Serie A would be competing for a Champions League spot.

The Fiver: sign up and get our daily football email.

Their temporary landlords were in no mood to make their stay comfortable. Atalanta’s defenders, deprived of anticipated reference points, lost track of Sassuolo’s Domenico Berardi, who ran on to a backheeled lay-off from Alfred Duncan and scored.

At almost the exact same moment, Hakan Calhanoglu gave Milan the lead at Spal. Franck Kessié added a second. Now the Rossoneri were on track to finish third. Atalanta were headed back to the Europa League.

They had begun this campaign playing in the qualifying rounds for that tournament, but exited before the group stage. Their manager, Gian Piero Gasperini, reflected on Saturday that it had been a blessing. As it was, Atalanta looked exhausted. It took a set-piece to bring them back into the game. Duván Zapata had two unsuccessful stabs at Papu Gómez’s corner from a yard out before Mehdi Bourabia’s attempted clearance rebounded off him and in.

Heading into the interval, Atalanta’s Marten De Roon fell theatrically under a forehead-to-forehead nudge from Sassuolo’s Francesco Magnanelli. Benches emptied. Both players were booked, but Berardi was also sent off for his part in the ensuing melee. It was not clear from replays what exactly he had done wrong. Sassuolo’s manager, Roberto De Zerbi later claimed Berardi had himself been assaulted. In any case, Atalanta made the extra man count. Gómez scored the next goal, before setting up Mario Pasalic for a third.

Facebook Twitter Pinterest The half-time melee erupts. Photograph: Paolo Magni/EPA

Atalanta, at last, could breathe easy. Their rivals could scarcely pause for breath at all. Milan contrived to blow their two-goal lead against Spal before retaking the lead with a Kessié penalty in the 66th minute. Inter’s match against Empoli was more eventful still.

The atmosphere at San Siro was electric, yet with a sense of anxiety underpinning it all. Inter’s supporters had seen their team fail in do-or-die home games already this season. Through 45 minutes, history appeared to be repeating. Inter created chance after chance, only to be thwarted by Empoli’s goalkeeper Bartlomiej Dragowski. At half-time, they were on course to finish fifth.

Keita Baldé came on and broke the deadlock. Inter’s joy was short-lived. Mauro Icardi missed a penalty, and Empoli equalised through teenager Hamed Junior Traore. They celebrated wildly. A draw would be enough to avoid relegation, as long as Genoa’s game against Fiorentina stayed at 0-0 (a result scarcely in doubt, both sides contenting themselves with a point as Genoa placed their hopes all on Inter).

Radja Nainggolan got Inter back in front in the 81st minute. The story ought to have ended here. Instead, Inter’s defending went to pieces. In the 89th minute, Danilo D’Ambrosio deflected a Francesco Caputo cross on to his crossbar. In the 92nd, Samir Handanovic pulled off a critical save – at least his third of the match – to deny Salih Ucan.

Facebook Twitter Pinterest Keita Baldé celebrates after scoring for Inter. Photograph: Miguel Medina/AFP/Getty Images

There was time yet for Marcelo Brozovic to score from halfway, only for that to be ruled out due to a foul by Keita on Dragowski, who had run forward for an Empoli corner. The forward was rightly sent off, but Inter clung on to win 2-1: sealing fourth place at last.

There was vindication here for Luciano Spalletti, who has endured weeks of speculation that he is about to be replaced by Antonio Conte. He could take credit both for the introduction of Keita and the presence of Nainggolan – the player he wanted most dearly last summer.

Greater things, though, were expected. Inter have obtained fewer points and scored fewer goals, while conceding more than they did last season. Spalletti’s erratic behaviour during interviews has often brought embarrassment. His shifting attitude towards Icardi has often been hard to comprehend. And yet, if this was indeed his last game, he will depart having achieved Champions League qualification in both his years at the helm. That is worth celebrating, even if the achievement is not on the same scale as that of the fellow blue-and-black-striped side that finished ahead of them.

Facebook Twitter Pinterest Milan players applaud their fans after a win at Spal, but they must settle for a Europa League spot. Photograph: Serena Campanini/EPA

Atalanta have been the story of the season in Serie A, and the celebrations that greeted the final whistle at the Mapei were matched only by the street party that awaited their team bus when it finally made it back to Bergamo. Third place represents the highest finish in their 112-year history.

It was achieved in the most entertaining way possible: outscoring every other team in the division. Atalanta closed the season on a 13-game unbeaten run. All this while spending less than a quarter on player salaries as those Milanese clubs they finished ahead of.

Gasperini remained coy on his future at full-time, though owner Antonio Percassi insisted it was “a given” that the manager would return. Time will tell if he is right to be so confident. A five-minute wait for a delayed kick-off on Sunday felt agonising. But nothing could dampen this team, and this city’s, enthusiasm for a first-ever run at the Champions League.

Talking points

• I do not have the word count to do justice to Daniele De Rossi’s Roma farewell, so I’ll save my memories for the forthcoming end-of-season awards piece. If you haven’t read his goodbye letter to the fans, though, then you should. Whatever comes next, he’ll be back soon enough to watch games as the fan that he is. As one banner put it, simply: “We are all DDR.”

AS Roma English (@ASRomaEN) He arrived as a fan, he leaves as a legend.



Thank you, Daniele. #DDR16 #ASRoma pic.twitter.com/0FPA6zTx8x

There were tears from Claudio Ranieri, too, who got a lot of love from the Curva Sud as his caretaker stint comes to a close. Mr Ranieri,” read one series of banners. “In our moment of need you were always present. Now accept this tribute from your people.”

• Former Milan boss Sinisa Mihajlovic kept Bologna up with the minimum of fuss. Their win over Napoli means he finished up taking 30 points from a possible 50. Pippo Inzaghi had previously managed 14 out of 63.