The Spaniards, who have struggled in the Primera Division this campaign with just one win from their opening seven matches, made it six points from an available six at the Ramon Sanchez Pizjuan.
Sevilla took a stranglehold on the game when Perotti slotted home from the spot on 63 minutes after Fallou Diagne was given his marching orders for a foul inside the area on Bacca, who made sure of the win in the final minute.
It was the German visitors who started strongly, however, with Sevilla goalkeeper Javi Varas keeping out efforts from Mike Hanke and Tim Albutat respectively.
Los Rojiblancos grew steadily stronger, with Bacca first firing wide of goal from a decent position before his next effort was tipped over by Freiburg custodian Oliver Baumann, who also managed to palm away Vicente Iborra's 30-yard effort.
Strikes from Ivan Rakitic and Diego Perotti also kept Baumann on his toes and the keeper ensured the sides went in level at half-time with a brilliant save from Diogo Figueiras' strike from the edge of the box.
After a quiet start to the second half, Sevilla were nearly made to pay for their profligacy in the opening 45 minutes as Varas had to parry away Tim Albutat's strike from 12 yards.
But the visitors' hopes of coming away with all three points were damaged when Sevilla were awarded a penalty in the 63rd minute after Diagne had fouled Bacca in the Freiburg area.
Worse was to come for Christian Streich's men, who were reduced to 10 men as Diagne was given a second yellow card for the challenge.
Perotti made no mistake with his penalty, slotting low to the left to break the deadlock.
Rakitic should have perhaps doubled Sevilla's lead but he was denied by Baumann, whose opposite number Varas made an equally spectacular save at the other end from Hanke's point-blank effort.
Bacca then struck a post in the closing stages but he would not be denied a goal when he stroked home from close range following Jairo Samperio's through ball from the left side of the penalty area.