A mixed crowd filled the Palexpo exhibition hall, with many children and young people present, the Catholic online news agency Kath.ch reported.
The Swiss government was represented by cabinet minister Doris Leuthard, herself a Catholic, of the Christian Democratic Party.
The service was multilingual: the pope delivered his homily in Italian and celebrated the liturgy in French.
He spoke of the blessings of forgiveness and the need to forgive one another.
There was one moment of alarm towards the end of the mass when the Pope appeared to stumble and had to be helped to his feet.
The Pope, who turns 82 later this year, had shown signs of tiredness throughout the day, according to 20 Minutes.
However the pontiff was able to leave the service unassisted.
As people exited Palexpo offerings were taken up to cover the cost of the papal visit, estimated at two million francs, Kath.ch reported.
The diocese of Lausanne, Geneva and Fribourg sounded the alarm last week over a predicted shortfall of 1.5 million francs.
An incident on the railway line between Geneva and Lausanne meant hundreds of people who had attended the event were stuck in Geneva for hours afterwards – some until the early morning on Friday – as intercity trains were cancelled.
Riesenpuff nach Papst-Besuch: Wie sich die blockierten SBB-Passagiere bis in die frühen Morgenstunden die Zeit ... https://t.co/7thE5AFHBN— 20 Minuten (@20min) June 22, 2018
At an ecumenical gathering at the World Council of Churches earlier in the day Pope Francis called for deeper unity between the Catholic Church and other Christian faiths.
The Pope flew out of Geneva headed for Rome after the mass and was seen off by President Alain Berset and Doris Leuthard.