Les Verts keeper Ruffier failed to control a routine Jeremy Clement back pass in the first half to gift champions PSG the lead at the Parc des Princes.
"Merci Ruffier," the crowd chanted after the French international's blunder put the home side in command.
PSG trail Girondins de Bordeaux, who are on 10 points after being held to a 1-1 home draw by Bastia, by two points.
As his team mates struggled to create space early on, Ibrahimovic, who has scored five goals in Ligue 1 this season, dropped deeper to unsettle the St Etienne defence.
But it was Ruffier who handed PSG the lead in the 24th minute, failing to deal with Clement's back pass to score an embarrassing own goal.
St Etienne came close to equalising thanks to Mevult Erding's brilliant volley from inside the box but Salvatore Sirigu tipped the attempt over the bar in the 36th minute.
Ibrahimovic made it 2-0 four minutes before the break when he powered a header past Ruffier from Maxwell's cross.
Ruffier showed his quality in the second half to parry away Edinson Cavani's curled attempt from outside the area but there was little he could do in the 62nd minute when Ibrahimovic intercepted a back pass by Kevin Monnet-Pacquet to add a third.
One minute later, Cavani rubbed salt on St Etienne's wounds with a stunning curling effort from 25 metres.
Ruffier's bad night could have ended with a penalty after he brought down Ibrahimovic but referee Clement Turpin decided against a sanction.
Ibrahimovic, however, took revenge when he finished off a counter-attack in the 72nd minute.
Other results in Ligue 1 on Sunday
Bordeaux 1 - 1 Bastia
Metz 2 - 1 Lyon
- Sports & Recreation