It took a penalty from youngster John Fleck after he had been brought down by Mihael Kovacevic to give the Gers the lead and Kyle Lafferty secured the points with a goal in the last minute.
United started the game in confident style and David Robertson should have done better than shoot straight at keeper Allan McGregor when Garry Kenneth's long throw-in broke to him.
Rangers threatened when Pedro Mendes' pass released Nacho Novo who beat two players before finding Kris Boyd, but the striker's shot went narrowly wide.
Fleck's free-kick into the box then fell to Barry Ferguson but the skipper's shot was blocked.
The home team were coming more and more into the game and Fleck's powerful left-foot shot was brilliantly touched over by United keeper Lukasz Zaluska.
The visitors threatened when Kirk Broadfoot's wild clearance spun high into the air in the Rangers six-yard box but Jose Sandaza was unable to take advantage.
Just before half-time the limping Novo was replaced by Kenny Miller.
Early in the second half Rangers nearly went ahead after Madjid Bougherra's fine run and cross, but Boyd's shot was smothered by the United keeper.
Steven Davis was starting to take control of the midfield and his well-weighted pass put Steven Whittaker through only for the wing-back to shoot tamely at the keeper.
Robertson passed up another chance for United with a weak header before Rangers took the lead. Mendes' pass sent Fleck racing into the penalty area and, as he cut across Kovacevic, the wing-back brought him down.
With regular penalty taker Boyd already off, it was Fleck, showing maturity beyond his years, who stroked the penalty home.
United had to chase the game now and Kovacevic went close with a header. Rangers hit on the break and Miller was twice denied by Zaluska before Lafferty steered the ball home off a defender's leg after the Terrors keeper had blocked Ferguson's first effort.