- Leicester City 1-2 Reading: As it happened
The defender was on hand to convert Brian Howard's right-wing corner with four minutes remaining.
Gylfi Sigurdsson's second goal of the season put Reading in front midway through the first half before Lloyd Dyer marked his return from injury with the equaliser shortly after the break.
It needed fine saves from Adam Federici to deny Joao Moreno and substitute Matty Fryatt to preserve Reading's lead in injury time.
Dyer, along with fellow midfielder Matt Oakley, was recalled to the side that triumphed at Leeds in the Carling Cup in midweek.
Sigurdsson came in in one of six changes made by Brian McDermott as injury-hit Reading were left counting the cost of their cup exit at home to League Two Northampton.
Dyer threatened in the 18th minute when his shot narrowly cleared the crossbar.
Reading responded shortly afterwards as Howard headed Mills' cross just wide.
Sigurdsson scored after 22 minutes following good work by Jimmy Kebe down the right-hand side. The Icelander had the simple task of turning the ball into the net from close range.
Shane Long came close to extending the lead with a header just before the break.
Dyer restored parity in the 52nd minute when his shot from just outside the box evaded the outstretched arm of Federici and found the bottom corner.
Brian Howard shot over the crossbar and Sigurdsson's looping header dropped just wide before the hour mark. Substitute Michail Antonio, who replaced the injured Brynjar Gunnarsson in first-half stoppage time, then went close.
Reading continued to look the most likely to make a breakthrough and Kebe forced Conrad Logan into action midway through the second half.
Steve Howard and Fryatt, making his return from injury, threatened but failed to work Federici in a rare Leicester attack.
Mills put Reading back in front but this time Paulo Sousa's side were unable to respond. Federici pushed away a headed effort from Moreno before parrying a Fryatt shot but the visitors held on.