Substitute Saville poked home from close range two minutes after being brought on to move Boro within three points of the play-off places.
Saville's strike earned Boro a third win in five games, a run which has put their top-six hopes back on track having slipped off the pace with five defeats in their previous seven.
Coventry, meanwhile, remain just six points above the relegation zone, with all of the bottom three having games in hand on the Sky Blues.
City led with the game's first chance after 11 minutes as Sam McCallum's long throw was flicked on by Michael Rose and, with Max Biamou lurking for a tap-in, Dijksteel could only help the ball into his own net.
Boro responded well but Chuba Akpom nodded a far-post corner back across the box when he should have gone for goal and Rose slid in to block a low Marc Bola shot that was heading for the bottom corner.
But Middlesbrough levelled after 41 minutes as McNair whipped in a quality deep free-kick from the right that was begging to be headed home and Hall obliged, back across goal into the far corner.
It was the 29-year-old's first goal since joining Boro from QPR in the summer, in only his seventh league appearance having missed more than four months with a thigh injury.
Neil Warnock made an attacking triple second-half substitution, bringing on Duncan Watmore, Yannick Bolasie and Marvin Johnson in an attempt to spark the visitors but it was Coventry who then went close.
However, Warnock's fourth change, the introduction of Saville, proved decisive as he was in the right place at the right time after a fantastic run and cross from Jonny Howson ricocheted off a Coventry defender into the midfielder's path.
Boro could have added a third in stoppage as Watmore set Bolasie clear but the on-loan Everton man fired into the side netting with the goal at his mercy.