Quins began well but a strong Warriors backline held firm and, despite being on the back foot, the hosts led 13-3 at the break after Nick Schonert went over from a line-out maul.
Mills lost possession as he dived over the line but the ball slipped backwards and the downward pressure from his legs was enough to ensure the try was given and take Warriors up to sixth in the table.
An encouraging start by Quins had hinted at a tough evening for the hosts but, despite looking sharp in wide areas, the Londoners were unable to break through.
Schonerts powerful score soon after the half-hour mark capped a good spell for Worcester who remained in control up front after the break.
The momentum could have changed after Marchant raced 60 metres having superbly anticipated a slow Duncan Weir pass.
But Mills was able to wrap up the win, although a late James Lang penalty did earn Quins a losing bonus point.
Worcester: Pennell; Heem, Venter, Mills (capt), Humphreys; Weir, Hougaard; Black, Singleton, Schonert, Bresler, Phillips, Hill, Lewis, Cox.
Harlequins: Brown; Murley, Marchant, Tapuai, Earle; Smith, Mulchrone; Marler, Crumpton, Collier, Merrick, Symons, Dombrandt, Clifford, Chisholm (capt).
CROCKED captain Gerrit-Jan van Velze has been ruled out of Worcester Warriors’ Gallagher Premiership clash with Harlequins at Sixways on Friday night (7.45pm).
The club have confirmed van Velze has sustained a shoulder joint injury, meaning centre Ryan Mills will skipper the side who have made three changes to the starting line-up.
Matt Cox who came off the bench in last weekend’s 28-13 defeat at Bath will start at number eight in place of van Velze.
Sam Lewis retains his place at openside flanker while the returning Ted Hill replaces Matti Williams at blindside.