The 2016–17 Primeira Liga (also known as Liga NOS for sponsorship reasons) was the 83rd season of the Primeira Liga, the top Portuguese professional league for association football clubs.

Benfica successfully defended their title, winning the league for a fourth consecutive season and record 36th time.

Teams
For the third consecutive season, the league was contested by a total of 18 teams, which included the best 16 sides from the 2015–16 season and two promoted from the 2015–16 LigaPro.

Porto B won the 2015–16 LigaPro title on 8 May 2016, but as the reserve team of Primeira Liga side Porto they were ineligible for promotion, which meant that the third-placed team would be promoted instead. On the same day, Chaves drew 1–1 with Portimonense to secure the return to the top flight of Portuguese football, 17 years after their last appearance in the 1998–99 season. On the final matchday, Feirense secured the third place and last promotion slot after drawing 1–1 with Chaves; they return to the Primeira Liga four years after their last appearance in the 2011–12 season.

The two promoted clubs replaced Académica and União da Madeira. Académica confirmed their relegation on 7 May 2016 after a run of 14 consecutive seasons in the Primeira Liga, following a goalless draw against Braga. On the last matchday, União da Madeira's 2–1 defeat against Rio Ave also sealed their relegation, one season after having been promoted.

Stadia and locations

Personnel and sponsors

Managerial changes

Season summary

League table

Positions by round

Results

Statistics

Top goalscorers

Hat-tricks

Top assists

Scoring

First goal of the season: Marcelo, for Rio Ave vs Porto (12 August 2016)
Latest goal of the season: Bas Dost, for Sporting CP vs Chaves (21 May 2017)
Biggest home win:
Porto 7–0 Nacional (4 March 2017)
Biggest away win:
Nacional 0–4 Porto (1 October 2016)
Feirense 0–4 Porto (11 December 2016)
Highest scoring match: 8 goals
Vitória de Guimarães 5–3 Paços de Ferreira (26 August 2016)
Braga 6–2 Feirense (28 November 2016)
Biggest winning margin: 7 goals
Porto 7–0 Nacional (4 March 2017)
Most goals scored in a match by a team: 7 goals
Porto 7–0 Nacional (4 March 2017)

Match streaks

Longest winning run: 9 matches
Porto, from matchday 17 (15 January 2017) to matchday 25 (10 March 2016)
Longest unbeaten run: 30 matches
Porto, from matchday 4 (10 September 2016) to matchday 33 (14 May 2017)
Longest winless run: 9 matches
Feirense, from matchday 6 (24 September 2016) to matchday 14 (19 December 2016)
Longest losing run: 7 matches
Estoril, from matchday 13 (9 December 2016) to matchday 19 (28 January 2017)
Arouca from matchday 21 (10 February 2017) to matchday 27 (2 April 2017)
Belenenses from matchday 25 (13 March 2017) to matchday 31 (30 April 2017)
Most consecutive draws: 4 matches
Chaves, from matchday 9 (31 October 2016) to matchday 12 (4 December 2016)
Paços de Ferreira from matchday 23 (25 February 2017) to matchday 26 (18 March 2017)

Discipline

Club
Most yellow cards: 100
Feirense
Most red cards: 9
Tondela

Player
Most yellow cards: 14
 Vítor Bruno (Feirense)
Most red cards: 3
 Tobias Figueiredo (Nacional)

Awards

Monthly awards

SJPF Young Player of the Month

Goal of the month

Annual awards

Player of the Season 
The Player of the Season was awarded to  Pizzi (Benfica)

Manager of the Season 
The Manager of the Season was awarded to  Rui Vitória (Benfica)

Young Player of the Season 
The Young Player of the Year was awarded to  Nelson Semedo (Benfica)

Goalkeeper of the Season 

The Goalkeeper of the Year was awarded to  Ederson (Benfica)

Team of the Year

Goalkeeper:  Rui Patrício (Sporting CP)

Defenders:  Nélson Semedo (Benfica),  Felipe (Porto),  Sebastián Coates (Sporting CP),  Alex Telles (Porto)

Midfielders:  Danilo Pereira (Porto),  William Carvalho (Sporting CP),  Pizzi (Benfica)

Forwards:  Gelson Martins (Sporting CP),  Jonas (Benfica),  Yacine Brahimi (Porto)

Goal of the season
The goal of the season was disputed by all the previous winners of the monthly polls.

Attendances

References

Primeira Liga seasons
Port
1