Match ends, Coventry City 1, Rotherham United 1.
Rotherham United stayed top of League One despite Coventry City coming from behind in Birmingham to snatch a point from a fiercely contested battle of second against first.
The Millers went ahead on 23 minutes after a bad error from home goalkeeper Marko Marosi, who spilled the corner from which the grateful Freddie Ladapo latched onto to score from close range.
After a 16th goal of the season for the Millers top scorer, Ladapo was then denied a second by a superb athletic save from Marosi.
Coventry had chances to level before the break, as Callum O'Hare blasted over and Max Biamou's header flew straight at Millers keeper Daniel Iversen.
The hosts were level just two minutes into the second half when City top scorer Matt Godden headed home at the near post for his 13th goal of the season.
And, despite nine minutes of injury time following a serious looking injury for Millers midfielder Daniel Barlaser, that was how it stayed.
Having been outmuscled before the break by the powerful Millers, Coventry had the better of it after the restart and had the chances to win it, going closest when Godden steered his late header just wide.
Although Mark Robins' men were unable to go above his old team-mate Paul Warne's Rotherham on the night, they are still level on points and with a game in hand.
Coventry, who attracted their biggest league crowd so far at St Andrew's of 8,990, now face another big home test on Sunday when they host improved, now fourth-placed Sunderland, who are three points behind.
Leaders Rotherham, at home to MK Dons, and third-placed Wycombe Wanderers, who are at Doncaster, both play on Saturday.
Sky Blues boss Mark Robins told BBC Coventry & Warwickshire:
"I'm disappointed we didn't get that second goal. But that's still 20 points from the last eight games. Our lads can play. It's just about belief. And once they get that, the sky's the limit.
"I won't be pointing the finger at my keeper, because he then went on to make an unbelievable save from Ladapo, who turned and really hit one. That was world class.
"Rotherham are a decent side. I was glad to get in at half time to rejig things. I was really proud of the way we played second half.
"And, in the end, with that header at the end, we were only a slither away from winning it."
Rotherham manager Paul Warne:
"I Just didn't think they could contain us in the first half - we took the lead and could have scored another. We stopped them from playing out from the back which not many teams have done.
"But to concede that goal, a quick free-kick out wide and a cross in, is really disappointing. But, in the end Coventry thoroughly deserved a draw - they were better than us second half.
"We just didn't perform as well and I just didn't think our key players had a really good game and that's what's disappointing for me because I think if we had been at our best we would have won.
"I've gone round the room and given some home truths. I want them to be great every game and it's good that they feel disappointed that they haven't won."
- 31McCallumSubstituted forGilesat 89'minutes
- 9BiamouSubstituted forBakayokoat 64'minutes
- 17O'HareBooked at 82mins
- 22OlosundeBooked at 33mins
- 6WoodBooked at 25mins
- 17CrooksBooked at 87minsSubstituted forLindsayat 88'minutes
- 11BarlaserSubstituted forMacDonaldat 73'minutes
- 8WilesSubstituted forAdelakunat 63'minutes
- Christopher Pollard
- Shots on Target
Second Half ends, Coventry City 1, Rotherham United 1.
Attempt missed. Jamie Lindsay (Rotherham United) right footed shot from the centre of the box is high and wide to the right.
Michael Smith (Rotherham United) wins a free kick in the defensive half.
Foul by Liam Walsh (Coventry City).
Attempt missed. Matt Godden (Coventry City) header from the centre of the box is close, but misses to the left. Assisted by Liam Walsh with a cross following a corner.
Corner, Coventry City. Conceded by Shaun MacDonald.
Corner, Coventry City. Conceded by Jamie Lindsay.
Offside, Rotherham United. Michael Ihiekwe tries a through ball, but Freddie Ladapo is caught offside.
Chiedozie Ogbene (Rotherham United) wins a free kick on the left wing.
Foul by Fankaty Dabo (Coventry City).
Attempt missed. Liam Walsh (Coventry City) right footed shot from outside the box is close, but misses the top left corner. Assisted by Fankaty Dabo.
Substitution, Coventry City. Ryan Giles replaces Sam McCallum.
Substitution, Rotherham United. Jamie Lindsay replaces Matt Crooks.
Attempt missed. Liam Walsh (Coventry City) right footed shot from outside the box is close, but misses the top left corner from a direct free kick.
Matt Crooks (Rotherham United) is shown the yellow card for a bad foul.
Foul by Matt Crooks (Rotherham United).
Callum O'Hare (Coventry City) wins a free kick in the attacking half.
Foul by Michael Smith (Rotherham United).
Dominic Hyam (Coventry City) wins a free kick in the defensive half.