St Mirren dominated early possession but the first chance of the game fell to Dundee striker Luka Tankulic who saw his long-range effort saved by Mark Ridgers.
Lewis McLear and McLean both had opportunities for the away side as the game drifted past the midway point in the first half but neither were able to find the target.
But McLean made no mistake in the 28th minute after latching on to Jeroen Tesselaar’s ball and firing past Kyle Letheren to put St Mirren in front.
Isaac Osbourne was denied by Letheren six minutes later before Tankulic and defender Paul McGinn both forced saves from St Mirren keeper Ridgers before the break.
Dundee won a succession of corners after the restart without troubling Ridgers although Tankulic had another shot on target from distance on the hour mark but St Mirren’s keeper stood firm.
But it was St Mirren who doubled their advantage on 68 minutes when Mallan slid into win the ball in the centre circle and embarked on weaving run before finding the bottom corner of the net from outside the area.
Things went bad to worse for the home side when McGinn brought down McLean in the area in the 79th minute. McGinn was dismissed for his rash challenge and McLean stepped up to calmly score from the spot and extend St Mirren’s lead.
Dundee managed to add a little respectability to the scoreline when Gary Irvine’s shot found the bottom-left corner of the net six minutes from full-time. But it was St Mirren who left Dens Park smiling after notching their third win of the season and moving them away from the relegation zone.