Coventry earned a deserved replay after holding Premiership Middlesbrough to a draw in their FA Cup fourth-round tie.
John's volley - his fourth goal of the season - earned Coventry a draw
The visitors were poor in the first half, but Jimmy Floyd Hasselbaink fired them ahead 29 seconds after the break.
However, dominant Coventry earned a trip to The Riverside thanks to a sweet strike from Stern John, who volleyed in from 12 yards.
The Championship side finished much the stronger, but Boro dug deep to hold them and ensure a home replay.
The draw will do little to ease the troubles for Middlesbrough manager Steve McClaren, who has seen his side struggle of late.
However, he will probably be happy to still be in the tie after Coventry controlled the opening half.
For all their possession, the Sky Blues struggled to find the pass to unlock the visitors.
And Coventry went to sleep at the start of the second half as a flick from Aiyegbeni Yakubu found a wide-open Hasselbaink to volley home his seventh goal of the season.
But the lead lasted just eight minutes as McSheffrey managed to hook a loose ball to the edge of the area.
Matthew Bates failed to clear the awkward, bouncing ball which allowed Don Hutchison to nod the ball on to John to strike a sweet volley from 12 yards for his fourth goal of the season.
Coventry boss Micky Adams:
"With our away form we might as well not turn up!
"But we have shown we are a dangerous opposition and we will go there and give it a good go.
"We understand that because they are a Premier League side the tie has swung back in their favour. However, they are now aware of what we have got."
Middlesbrough boss Steve McClaren:
"It was important we didn't get beaten, and that's the big thing we take out of this.
"It was never going to be easy, but we ground out a result due to first-class efforts, commitment and attitude.
"That was epitomised by a 17-year-old in Lee Cattermole. We are having to throw in the kids, but we need our key men to come back."
Coventry: Fulop, Duffy, Shaw, Williams, Hall, Scowcroft, Doyle, Hutchison (Jorgensen 86), McSheffrey (Impey 90), Adebola, John (Morrell 90).
Subs Not Used: Page, Ince.
Goals: John 54.
Middlesbrough: Schwarzer, Parnaby, Ehiogu (Bates 28), Southgate, Pogatetz, Mendieta, Cattermole, Rochemback (Doriva 72), Downing, Hasselbaink, Yakubu (Viduka 65).
Subs Not Used: Knight, Johnson.
Goals: Hasselbaink 46.
Ref: C Foy (Merseyside).