Until then it looked as though the Tigers were going to celebrate their first away win at City since February 1930 after David Meyler had fired Steve Bruce’s side into a first-half lead.
But with time running out and City running short on ideas, Milner stepped up to send a magnificent free-kick curving around the wall and beyond the despairing reach of goalkeeper Allan McGregor.
A draw still means that the Premier League champions trail leaders Chelsea by seven points in their bid to retain the title. It was a poor performance by City and far from their first here in recent weeks following defeats in league and FA Cup to Arsenal and Middlesbrough. They have now failed to win in their last four league games for the first time since 2009.
Hull had arrived here having lost 10 of their last 14 Premier League games stretching back to November, and looking every inch cannon fodder for the reigning champions.
Bruce named new £3million signing Dame N’Doye among his substitutes and he was sat on the bench alongside Mike Phelan, the former Manchester United assistant boss who was next to Bruce in his new role as Hull’s No.2 for the first time.
Manuel Pellegrini gave Edin Dzeko his first league start since October and was able to recall Samir Nasri after a calf injury for his first game in a month.
It was clear from the start that Hull were going to be an altogether tougher proposition than expected, however, and Bruce’s side should have gone ahead in the 16th minute.
Robbie Brady did well to work some space on the left and swung over a cross to the back post where Ahmed Elmohamady met it with a firm header against the underside of the bar.
Pellegrini’s side were all at sea at both ends of the pitch. David Silva and Sergio Aguero exchanged puzzled looks and a few choice words in Spanish after the striker failed to anticipate Silva’s flick into the box from a free-kick, while Joe Hart and Martin Demichelis got themselves in a muddle and took turns at hack the ball to safety, with very little success.
When the England goalkeeper and his centre-back failed to communicate properly for a second time in the 35th minute, it proved far more costly.
Hart was already on his way out of goal when Demichelis stepped in and played a poor clearance straight to Jake Livemore. The Hull midfielder’s shot was saved by Hart and ran loose to Gaston Ramirez. Pablo Zabaleta put in a challenge on Ramirez but the ball ricocheted off the Hull player against the post, and rolled to Meyler to tuck home.
It was a dog’s dinner of a goal and one that summed up City’s lamentable performance in the first half. Amazingly, it was also the 10th time in 24 league games this season that they have gone behind.
Pellegrini responded at the interval by sending on Jesus Navas for Fernando who, to be fair, had been on the receiving end of a bone-shuddering tackle from Tom Huddlestone earlier on. But Navas’ introduction ahead of Frank Lampard and James Milner was clearly designed to inject more pace into a stale City performance.
It was almost rewarded with an equaliser in the 53rd minute when Zabaleta crossed from the right and Dzeko’s first-time shot was well turned around the post by McGregor.
City thought they should have had a penalty moments later, and with some justification when Alex Bruce barrelled into the back of Silva, but referee Jon Moss waved away their appeals.
In spite of their insipid display, City were always going to have chances but they had to wait until added time.
First Sergio Aguero hammered a shot against the underside of the bar after controlling Nasri’s cross to the far post, and then Milner struck with his late late equaliser after Aguero had been fouled by Huddlestone.
Relief for City but two points dropped all the same.