The 2025 Porto local election was held on 12 October 2025 to elect the members for Porto City Council, Porto Municipal Assembly and the city's 7 parish assemblies.
This election was expected to be extremely competitive after the 3 mandates of the liberal-backed Independent Rui Moreira, which was barred from running for a 4th term, with both the Socialists and Social Democrats hoping to win the second major city in Portugal, and Moreira's independent movement presenting then deputy mayor Filipe Araújo as a candidate, despite not having the endorsement of Rui Moreira himself.
The Socialist Party chose former Health minister Manuel Pizarro as their candidate, while the Social Democratic Party formed a coalition with the CDS – People's Party and the Liberal Initiative with former minister of Parliament Affairs Pedro Duarte as their candidate.
The final result was very close, with the PSD/CDS/IL candidate, Pedro Duarte, prevailing over the PS by just 2,000 votes. Manuel Pizarro (PS) failed in his 3rd attempt to become mayor of Porto, leading the Socialists to another defeat; the last time the PS won a local election in Porto was 1997. Chega gathered 8.5% of the votes and elected one councillor, while CDU failed to win representation for Porto city council for the first time ever. Deputy mayor Filipe Araújo had a very poor result, just 5% and failed to be elected to council, while the Left Bloc also lost its sole councillor, and polled at just 1.8%. Turnout increased considerably in this election, with 57% of voters casting a ballot, the highest share since 1993.
Background In the 2021 election, Rui Moreira, mayor since 2013, won a third term as Mayor of Porto, winning 40.7% of the votes and 6 seats, losing his majority in the city council. The Socialist candidate, Tiago Barbosa Ribeiro, won 18.0% of the vote and 3 seats, while the Social Democratic candidate, Vladimiro Feliz, won 17.2% of the votes and 2 seats.
The Unitary Democratic Coalition, led by Ilda Figueiredo, won 7.5% of the votes and 1 seat, while the Left Bloc, which presented Sérgio Aires as a candidate for mayor, gained a seat in the City Council, for the first time in its history, achieving 6.3% of the votes.
Candidates selection After 12 years of Independent Rui Moreira as Mayor, the two major parties, the Socialist Party and the Social Democratic Party, sought to retake Porto.
On the right, Filipe Araújo, the leader of Rui Moreira's independent movement and Deputy Mayor, sought to run as an independent, despite pressures from the PSD who wanted to prevent a split among the right. The PSD waited for Minister of Parliamentary Affairs Pedro Duarte to be the party's candidate for Mayor, despite having other options such as MP Miguel Guimarães, while initiating talks with CDS–PP and the Liberal Initiative for a coalition.
In April 2025, Pedro Duarte confirmed his intention to run for Mayor with a PSD/CDS/IL coalition. Meanwhile, Filipe Araújo decided to still run, despite not having the endorsement of Rui Moreira.
On the left, the PS had several potential candidates, such as former minister and former Mayor of Baião José Luís Carneiro, executive director of the National Healthcare Service Fernando Araújo and former minister of Health and candidate for mayor in 2013 and 2017 Manuel Pizarro. Pizarro was eventually chosen as the candidate.
Electoral system Each party or coalition must present a list of candidates. The winner of the most voted list for the municipal council is automatically elected mayor, similar to first-past-the-post (FPTP). The lists are closed and the seats in each municipality are apportioned according to the D'Hondt method. Unlike in national legislative elections, independent lists are allowed to run.
Parties and candidates Declared Party/Coalition Politicalposition Candidate 2021 resultRef. Votes (%) Seats FA Filipe Araújo: Do it as Porto 40.7% PS Socialist Party Centre-left Manuel Pizarro 18.0% OPSN Porto is us Centre-right to right-wing Pedro Duarte 17.2% CDU Unitary Democratic Coalition Left-wingto far-left Diana Ferreira7.5% BE Left Bloc Left-wingto far-left Sérgio Aires 6.3% CH Enough! Far-right Miguel Corte-Real 3.0% LFREELeft-wingHélder Sousa0.5% VP Volt Portugal Guilherme Jorge0.4% NC Porto First – Nuno Cardoso 0.2% ADN National Democratic Alternative Far-right Frederico Duarte Carvalho PLS Liberal Social Party Centre Luís Tinoco Azevedo PTP Portuguese Labour Party Left-wing Maria Amélia Costa
Withdrew Party/Coalition Politicalposition Candidate 2021 resultRef. Votes (%) Seats RIR React, Include, Recycle Centre Vitorino Silva ND New Right Right-wing Aníbal Pinto AA Porto with Porto Centre António Araújo
Campaign period Party slogans Party or alliance Original slogan English translation Refs FA « Fazer à Porto » "Do it as Porto" PS « À moda do Porto » "Porto style" OPSN « O Porto somos nós » "Porto is us" CDU « Porto para todos » "Porto for all" BE « Estamos aqui » "We are here" CH « O Miguel Chega para resolver » "Miguel arrives to solve"
Candidates' debates + 2025 Porto local election debates Date Organisers Moderator(s) FA PS OPSN CDU BE CH Refs 21 Sep 2025 SIC Notícias Nelma Serpa PintoNIPPPPP 26 Sep 2025 Rádio Observador Carla Jorge de CarvalhoMiguel Viterbo DiasPPPPPP 27 Sep 2025 CNN Portugal João Póvoa MarinheiroPPPPPP 30 Sep 2025 RTP1 Carlos DanielPPPPPP
Opinion polling
Polling firm/Link Fieldwork date Sample sizeFAOPSNPSCDUBECHLNCPPMLead IL CDS PSD 2025 local election 12 Oct 2025 5.137.435.53.91.88.23.41.92.81.9 CESOP–UCP 12 Oct 2025 6,124 4–6 36–40 33–37 4–6 1–3 6–9 3–5 1–3 2–73 ICS/ISCTE/Pitagórica 12 Oct 2025 7,532 3.8–6.8 34.2–39.4 32.0–37.2 2.7–5.5 1.1–3.1 6.8–10.2 1.1–3.1 1.4–3.4 2.2 Intercampus 12 Oct 2025 5,890 3.5–7.5 37.0–41.0 30.8–34.8 2.5–6.5 0.1–4.1 6.2–10.2 1.3–5.3 2.7–6.76.2Pitagórica29 Sep–4 Oct 20256257.033.132.93.32.910.43.93.33.20.2CESOP–UCP27–28 Sep 20251,1636322953106453ICS/ISCTE5–16 Sep 20258053343743103243ICS/ISCTE17 Jun–2 Jul 202580553336431212432025 Legislative election18 May 20258.135.123.73.62.914.17.25.211.42024 EP election9 Jun 202412.731.227.64.46.66.66.54.43.62024 Legislative election10 Mar 20246.834.328.33.45.710.05.65.96.02022 Legislative election30 Jan 20227.82.034.735.14.76.03.32.24.20.4 2021 local election 26 Sep 2021 40.717.218.07.56.33.00.50.26.6 22.7
Results Municipal Council
| colspan="11" align=center| |- ! rowspan="2" colspan=2 style="background-color:#E9E9E9" align=left|Parties ! rowspan="2" style="background-color:#E9E9E9" align=right|Votes ! rowspan="2" style="background-color:#E9E9E9" align=right|% ! rowspan="2" style="background-color:#E9E9E9" align=right|±pp swing ! colspan="2" style="background-color:#E9E9E9" align="center"|Councillors |- style="background-color:#E9E9E9" ! style="background-color:#E9E9E9" align="center"|Total ! style="background-color:#E9E9E9" align="center"|± |- |style="width: 9px" bgcolor=#2A52BE align="center" | |align=left|Social Democratic / People's / Liberal Initiative |42,984||37.36||20.2||6||4
|40,863||35.52||17.4||6||3 |- |style="width: 9px" bgcolor=#202056 align="center" | |align=left|Chega |9,473||8.23||5.2||1||1 |- |style="width: 9px" bgcolor=gray align="center" | |align=left|Filipe Araújo: Do it as Porto |5,845||5.08||35.6||0||6
|4,515||3.92||3.6||0||1
|3,825||3.32||2.8||0||0 |- |style="width: 9px" bgcolor=gold align="center" | |align=left|We, the Citizens! / People's Monarchist |2,192||1.91||||0||
|2,075||1.80||4.4||0||1
|363||0.32||||0|| |- |style="width: 9px" bgcolor="#fbca44" align="center" | | align="left" |Liberal Social |291||0.25||||0|| |- |style="width: 9px" bgcolor=Purple align="center" | |align=left|Volt Portugal |222||0.19||||0|| |- |style="width: 9px" bgcolor=#CC0033 align="center" | |align=left|Labour |62||0.05||||0|| |- |colspan=2 width="330" align=left style="background-color:#E9E9E9"|Total valid |width="50" align="right" style="background-color:#E9E9E9"|112,710 |width="40" align="right" style="background-color:#E9E9E9"|97.96 |width="40" align="right" style="background-color:#E9E9E9"|1.4 |width="40" align="right" style="background-color:#E9E9E9"|13 |width="40" align="right" style="background-color:#E9E9E9"|0 |- |colspan=2|Blank ballots |1,439||1.25||1.0||colspan=3 rowspan=4| |- |colspan=2|Invalid ballots |904||0.79||0.4 |- |colspan=2 align=left style="background-color:#E9E9E9"|Total |width="50" align="right" style="background-color:#E9E9E9"|115,053 |width="40" align="right" style="background-color:#E9E9E9"|100.00 |width="40" align="right" style="background-color:#E9E9E9"| |- |colspan=2|Registered voters/turnout ||201,968||56.97||8.2 |- | colspan=11 align=left | Source:
Municipal Assembly
| colspan="11" align=center| |- ! rowspan="2" colspan=2 style="background-color:#E9E9E9" align=left|Parties ! rowspan="2" style="background-color:#E9E9E9" align=right|Votes ! rowspan="2" style="background-color:#E9E9E9" align=right|% ! rowspan="2" style="background-color:#E9E9E9" align=right|±pp swing ! colspan="2" style="background-color:#E9E9E9" align="center"|Seats |- style="background-color:#E9E9E9" ! style="background-color:#E9E9E9" align="center"|Total ! style="background-color:#E9E9E9" align="center"|± |- |style="width: 9px" bgcolor=#2A52BE align="center" | |align=left|Social Democratic / People's / Liberal Initiative |41,892||36.41||17.8||15||5
|35,211||30.60||11.4||13||3 |- |style="width: 9px" bgcolor=#202056 align="center" | |align=left|Chega |10,873||9.45||6.1||4||3
|6,361||5.53||4.9||2||2 |- |style="width: 9px" bgcolor=gray align="center" | |align=left|Filipe Araújo: Do it as Porto |6,139||5.34||29.2||2||13
|5,928||5.15||3.2||2||1
|2,925||2.54||5.0||1||2 |- |style="width: 9px" bgcolor=gold align="center" | |align=left|We, the Citizens! / People's Monarchist |2,149||1.87||||0||
|388||0.34||||0|| |- |style="width: 9px" bgcolor="#fbca44" align="center" | | align="left" |Liberal Social |352||0.31||||0|| |- |style="width: 9px" bgcolor=Purple align="center" | |align=left|Volt Portugal |227||0.20||||0|| |- |colspan=2 width="330" align=left style="background-color:#E9E9E9"|Total valid |width="50" align="right" style="background-color:#E9E9E9"|112,445 |width="40" align="right" style="background-color:#E9E9E9"|97.73 |width="40" align="right" style="background-color:#E9E9E9"|1.2 |width="40" align="right" style="background-color:#E9E9E9"|39 |width="40" align="right" style="background-color:#E9E9E9"|0 |- |colspan=2|Blank ballots |1,613||1.40||0.9||colspan=3 rowspan=4| |- |colspan=2|Invalid ballots |1,002||0.87||0.3 |- |colspan=2 align=left style="background-color:#E9E9E9"|Total |width="50" align="right" style="background-color:#E9E9E9"|115,060 |width="40" align="right" style="background-color:#E9E9E9"|100.00 |width="40" align="right" style="background-color:#E9E9E9"| |- |colspan=2|Registered voters/turnout ||201,968||56.97||8.2 |- | colspan=11 align=left | Source:
Parish Assemblies
|- class="unsortable" !rowspan=2|Parish!!%!!S!!%!!S!!%!!S!!%!!S!!%!!S!!%!!S!!%!!S !rowspan=2|TotalS |- class="unsortable" style="text-align:center;" !colspan=2 | OPSN !colspan=2 | PS !colspan=2 | CH !colspan=2 | FA !colspan=2 | L !colspan=2 | CDU !colspan=2 | BE |- | style="text-align:left;" | Aldoar, Foz do Douro e Nevogilde | style="background:#2A52BE; color:white;"| 51.0 | 11 | 22.0 | 5 | 9.0 | 2 | 6.5 | 1 | 3.5
| 2.9
| 1.5
| 19 |- | style="text-align:left;" | Bonfim | style="background:#2A52BE; color:white;"| 33.8 | 8 | 27.5 | 6 | 8.7 | 2 | 6.5 | 1 | 7.1 | 1 | 7.7 | 1 | 3.8
| 19 |- | style="text-align:left;" | Campanhã | 23.5 | 5 | style="background:#FF66FF; color:white;"| 41.0 | 10 | 14.0 | 3 | 3.6
| 3.5
| 5.8 | 1 | 1.9
| 19 |- | style="text-align:left;" | Cedofeita, Santo Ildefonso, Sé, Miragaia, São Nicolau e Vitória | 30.8 | 7 | style="background:#FF66FF; color:white;"| 31.9 | 7 | 6.5 | 1 | 5.2 | 1 | 8.3 | 1 | 7.0 | 1 | 4.3 | 1 | 19 |- | style="text-align:left;" | Lordelo do Ouro e Massarelos | style="background:#2A52BE; color:white;"| 40.8 | 9