Assistant d'université de profession, il se présente en 1981 aux élections législatives dans la 13e circonscription des Hauts-de-Seine et arrive en deuxième position derrière le député-maire de MontrougeHenri Ginoux mais devant le candidat communiste Henri Ravera qui se retire. Il remporte alors le scrutin avec 55,46 % des suffrages.
Lors des municipales de 1983, il est la tête de liste de l'union de la gauche à Montrouge mais il est largement défait par le maire sortant. Obtenant sept sièges sur 39, il fait son entrée au conseil municipal.
En 1986, avec l'introduction du scrutin proportionnel, il conduit la liste socialiste « Pour une majorité de progrès avec le président de la République » qui obtient 28,26 % et 4 élus. Deux ans plus tard, avec le retour du scrutin majoritaire à deux tours, il se présente dans la 11e circonscription (Montrouge, Bagneux, Malakoff) et est réélu avec 58,54 % des voix face au candidat UDF Gérard Trouvé. Au cours de cette législature, il devient premier questeur de l'Assemblée nationale.
Candidat à un quatrième mandat en 1993, il est cependant battu dès le premier tour, terminant en troisième position derrière le RPR Alain Robert et la communiste Janine Jambu. Cette dernière lui succède.
Au Parti socialiste, il a été premier secrétaire fédéral des Hauts-de-Seine et a siégé à la Commission nationale des conflits.