Robert Mugabe avait suscité un tollé des associations en les qualifiant de "pires que des porcs et des chiens".
La loi, qui autorise l'union de deux personnes du même sexe par mariage ou partenariat civil, a été vivement critiquée par des organisations religieuses, ainsi que de nombreux partis d'opposition.
Le gouvernement a estimé pour sa part que la nouvelle législation faisait partie de son engagement à combattre toute forme de discrimination.
L'adoption de ce texte est considérée comme une étape historique par les associations de défense des droits des homosexuels telles que Joint Working Group, coalition nationale de 17 associations de lesbiennes, homosexuels, bisexuels et transsexuels.
"La (loi) symbolise le rejet de tentatives préalables de classer les lesbiennes et les homosexuels comme des citoyens de seconde zone", a déclaré Kikile Vilakazi, porte-parole de la coalition, dans un communiqué.
La Constitution sud-africaine, adoptée deux ans après les premières élections multiraciales de 1994, interdit explicitement toute discrimination sur des critères d'orientation sexuelle.
En décembre 2005, la Cour constitutionnelle avait donné un an au Parlement pour modifier les textes en vigueur sur le mariage qui le définissent comme "une union volontaire reconnue légalement d'un homme et d'une femme à l'exclusion de tout autre".
"C'est vraiment très triste que la direction de l'ANC (Congrès national africain, au pouvoir) ait choisi de soutenir cette loi en dépit d'écrasantes objections", a-t-il ajouté.
La loi doit à présent être examinée par le Conseil national des provinces (chambre haute à pouvoir consultatif), avant d'être promulguée par le président Thabo Mbeki.
Gays et lesbiennes sont souvent victimes de discrimination en Afrique et l'homosexualité reste illégale dans de nombreux pays du continent.
Le président zimbabwéen Robert Mugabe avait ainsi suscité un tollé des associations de défense des droits des homosexuels il y a quelques années en les qualifiant de "pires que des porcs et des chiens".