Gerard Pique was sent off for a cynical lunge on Rafa Lopez after 24 minutes, although Barca were already a goal to the good by then, thanks to Lionel Messi's brilliant early strike.
Pep Guardiola's side never really looked in danger, despite Pique's departure, and their dominance finally paid off as Xavi all but sealed a 17th league win of the season in the 67th minute.
Roberto Soldado's stoppage-time penalty pulled a goal back for the visitors and Marquez was sent off for his foul on Kepa Blanco which led to the spot-kick.
Guardiola defended misfiring striker Ibrahimovic, who has failed to score in his last five league matches.
"He was scandalously good tonight," the Barcelona coach said.