Pep Guardiola was furious on the touchline as Milner was given a reprieve for what could, and should, have been his second yellow card of the match.
The 35-year-old deputised for injured Trent Alexander-Arnold at right-back and struggled to cope with Phil Foden.
He was given a yellow in the first half for a foul on Foden and then took out Bernardo Silva as City were breaking.
City were incensed that Milner stayed on the pitch, especially at a critical juncture of the game.
He then went on to have a helping hand in Salah's goal minutes later, before Kevin De Bruyne equalised in a thrilling 2-2 draw at Anfield.
talkSPORT host, and former Spurs midfielder, O'Hara said on Monday's Breakfast: "It's a red. He's got to go.
"It's stonewall and I can't believe the ref hasn't given it. The ref has bottled it, we know that.
"At Anfield, the crowd, big moment, on TV, everyone watching - I don't know what's going through his head.
"There are some fouls where you can say 'I will give you one more chance and I will let this one go'.
"But that was a yellow. You have to go and give him a booking and have to send him off.
"You can see why Pep is so angry. He absolutely lost it because you talk about the way decisions go at Anfield, Old Trafford and go back to Fergie time. There is an argument for it."
O'Hara added: "You saw it with the Reece James moment where he got sent off [in Chelsea's 1-1 draw at Anfield in August]. Everybody was ready to enjoy that game and he got sent off and it killed the spectacle.
"We understand that and all want to watch a great game, but at the end of the day Milner is in the wrong. It was two bookable offences and should have been sent off for it, regardless of whether it is a great game or not.
"He has to get sent off."