Fare Guide

Estimated lowest fares found within 7 days

Cheapest Airline Air France

The cheapest airline(s) flying from Milan to Porto is Air France.

  • Air France Air France
  • KLM KLM
  • TAP Air Portugal TAP Air Portugal
Cheapest Month March

Travel Period: February 2025 - January 2026

The cheapest month(s) to fly from Milan to Porto is March.

  • Feb 2025
  • Mar 2025
  • Apr 2025
  • May 2025
  • Jun 2025
  • Jul 2025
  • Aug 2025
  • Sep 2025
  • Oct 2025
  • Nov 2025
  • Dec 2025
  • Jan 2026
Cheapest Day of the Week Wednesday

The cheapest day(s) of the week to fly from Milan to Porto is Wednesday.

  • Sun Sunday
  • Mon Monday
  • Tue Tuesday
  • Wed Wednesday
  • Thu Thursday
  • Fri Friday
  • Sat Saturday

Flight Schedules

Last Updated: Thu, 2 Jan, 2025

  • Time Earliest
    • Earliest
    • Latest
  • Depart Earliest
    • Earliest
    • Latest
  • Arrive
    • Earliest
    • Latest
  • Duration
    • Shortest
    • Longest
  • Stopover
    All
  • Airline Filter by Airline
    View All Airline
  • Availability
    • M
    • T
    • W
    • T
    • F
    • S
    • S
  • 08:15 BGY
    10:00 OPO
    2Hrs, 45m Direct
  • BGYMilan Bergamo/Orio al Serio Airport 08:15 - OPO 10:00 2h 45m Direct
  • BGYMilan Bergamo/Orio al Serio Airport 08:15
  • OPOPorto Airport 10:00
  • 2h 45m
  • Direct
  • Ryanair (FR 4042)Boeing 737 Max 8 Passenger
  • Ryanair (FR 4042)
    • -
    • -
    • -
    • -
    • -
    • -
    • S
  • Boeing 737 Max 8 Passenger
  • 10:05 MXP
    11:50 OPO
    2Hrs, 45m Direct
  • MXPMilan Malpensa Airport 10:05 - OPO 11:50 2h 45m Direct
  • MXPMilan Malpensa Airport 10:05
  • OPOPorto Airport 11:50
  • 2h 45m
  • Direct
  • Ryanair (FR 4018)Boeing 737 Max 8 Passenger
  • Ryanair (FR 4018)
    • M
    • -
    • -
    • -
    • -
    • -
    • -
  • Boeing 737 Max 8 Passenger
  • 10:50 BGY
    12:35 OPO
    2Hrs, 45m Direct
  • BGYMilan Bergamo/Orio al Serio Airport 10:50 - OPO 12:35 2h 45m Direct
  • BGYMilan Bergamo/Orio al Serio Airport 10:50
  • OPOPorto Airport 12:35
  • 2h 45m
  • Direct
  • Ryanair (FR 4042)Boeing 737 Max 8 Passenger
  • Ryanair (FR 4042)
    • -
    • -
    • -
    • -
    • -
    • S
    • -
  • Boeing 737 Max 8 Passenger
  • 11:40 BGY
    13:25 OPO
    2Hrs, 45m Direct
  • BGYMilan Bergamo/Orio al Serio Airport 11:40 - OPO 13:25 2h 45m Direct
  • BGYMilan Bergamo/Orio al Serio Airport 11:40
  • OPOPorto Airport 13:25
  • 2h 45m
  • Direct
  • Ryanair (FR 4042)Boeing 737 800
  • Ryanair (FR 4042)
    • -
    • -
    • -
    • -
    • F
    • -
    • -
  • Boeing 737 800
  • 12:25 BGY
    14:10 OPO
    2Hrs, 45m Direct
  • BGYMilan Bergamo/Orio al Serio Airport 12:25 - OPO 14:10 2h 45m Direct
  • BGYMilan Bergamo/Orio al Serio Airport 12:25
  • OPOPorto Airport 14:10
  • 2h 45m
  • Direct
  • Ryanair (FR 4042)Boeing 737 800
  • Ryanair (FR 4042)
    • -
    • T
    • -
    • -
    • -
    • -
    • -
  • Boeing 737 800
  • 12:55 BGY
    14:40 OPO
    2Hrs, 45m Direct
  • BGYMilan Bergamo/Orio al Serio Airport 12:55 - OPO 14:40 2h 45m Direct
  • BGYMilan Bergamo/Orio al Serio Airport 12:55
  • OPOPorto Airport 14:40
  • 2h 45m
  • Direct
  • Ryanair (FR 4042)Boeing 737 Max 8 Passenger
  • Ryanair (FR 4042)
    • M
    • -
    • -
    • -
    • -
    • -
    • -
  • Boeing 737 Max 8 Passenger
  • 16:25 MXP
    18:05 OPO
    2Hrs, 40m Direct
  • MXPMilan Malpensa Airport 16:25 - OPO 18:05 2h 40m Direct
  • MXPMilan Malpensa Airport 16:25
  • OPOPorto Airport 18:05
  • 2h 40m
  • Direct
  • Ryanair (FR 4018)Boeing 737 Max 8 Passenger
  • Ryanair (FR 4018)
    • -
    • -
    • -
    • -
    • F
    • -
    • -
  • Boeing 737 Max 8 Passenger
  • 16:55 BGY
    18:40 OPO
    2Hrs, 45m Direct
  • BGYMilan Bergamo/Orio al Serio Airport 16:55 - OPO 18:40 2h 45m Direct
  • BGYMilan Bergamo/Orio al Serio Airport 16:55
  • OPOPorto Airport 18:40
  • 2h 45m
  • Direct
  • Ryanair (FR 4638)Boeing 737 800
  • Ryanair (FR 4638)
    • -
    • -
    • -
    • -
    • -
    • -
    • S
  • Boeing 737 800
  • 17:10 BGY
    18:55 OPO
    2Hrs, 45m Direct
  • BGYMilan Bergamo/Orio al Serio Airport 17:10 - OPO 18:55 2h 45m Direct
  • BGYMilan Bergamo/Orio al Serio Airport 17:10
  • OPOPorto Airport 18:55
  • 2h 45m
  • Direct
  • Ryanair (FR 4042)Boeing 737 800
  • Ryanair (FR 4042)
    • -
    • -
    • -
    • T
    • -
    • -
    • -
  • Boeing 737 800
  • 05:45 BGY
    10:10 OPO
    5Hrs, 25m 1 Stop (BCN)
  • BGYMilan Bergamo/Orio al Serio Airport 05:45 - OPO 10:10 5h 25m 1 Stop (BCN) Barcelona
  • BGYMilan Bergamo/Orio al Serio Airport 05:45
    BCNBarcelona Airport 09:10
  • BCNBarcelona Airport 07:20
    OPOPorto Airport 10:10
  • 5h 25m (1h 50m)
  • 1 Stop BCN · Barcelona 1h 50m
  • Ryanair (FR 847)Boeing 737 800
    Ryanair (FR 4545)Boeing 737 Max 8 Passenger
  • Ryanair (FR 847)
    • -
    • -
    • -
    • -
    • -
    • -
    • S
  • 05:55 BGY
    11:00 OPO
    6Hrs, 05m 1 Stop (STN)
  • BGYMilan Bergamo/Orio al Serio Airport 05:55 - OPO 11:00 6h 05m 1 Stop (STN) London
  • BGYMilan Bergamo/Orio al Serio Airport 05:55
    STNLondon Stansted Airport 08:50
  • STNLondon Stansted Airport 07:00
    OPOPorto Airport 11:00
  • 6h 05m (1h 50m)
  • 1 Stop STN · London 1h 50m
  • Ryanair (FR 2697)Boeing 737 800
    Ryanair (FR 1261)Boeing 737 800
  • Ryanair (FR 2697)
    • -
    • -
    • -
    • -
    • -
    • S
    • -
  • 06:00 MXP
    10:40 OPO
    5Hrs, 40m 1 Stop (BVA)
  • MXPMilan Malpensa Airport 06:00 - OPO 10:40 5h 40m 1 Stop (BVA) Paris
  • MXPMilan Malpensa Airport 06:00
    BVAParis Beauvais-Tille Airport 09:25
  • BVAParis Beauvais-Tille Airport 07:45
    OPOPorto Airport 10:40
  • 5h 40m (1h 40m)
  • 1 Stop BVA · Paris 1h 40m
  • Ryanair (FR 8884)Boeing 737 Max 8 Passenger
    Ryanair (FR 595)Boeing 737 Max 8 Passenger
  • Ryanair (FR 8884)
    • -
    • -
    • -
    • -
    • F
    • -
    • -
  • 06:30 MXP
    11:10 OPO
    5Hrs, 40m 1 Stop (STN)
  • MXPMilan Malpensa Airport 06:30 - OPO 11:10 5h 40m 1 Stop (STN) London
  • MXPMilan Malpensa Airport 06:30
    STNLondon Stansted Airport 09:00
  • STNLondon Stansted Airport 07:35
    OPOPorto Airport 11:10
  • 5h 40m (1h 25m)
  • 1 Stop STN · London 1h 25m
  • Ryanair (FR 2756)Boeing 737 800
    Ryanair (FR 1261)Boeing 737 Max 8 Passenger
  • Ryanair (FR 2756)
    • -
    • -
    • -
    • -
    • F
    • -
    • -
  • 07:00 MXP
    13:00 OPO
    7Hrs, 00m 1 Stop (VLC)
  • MXPMilan Malpensa Airport 07:00 - OPO 13:00 7h 1 Stop (VLC) Valencia
  • MXPMilan Malpensa Airport 07:00
    VLCValencia Airport 12:25
  • VLCValencia Airport 09:00
    OPOPorto Airport 13:00
  • 7h (3h 25m)
  • 1 Stop VLC · Valencia 3h 25m
  • Ryanair (FR 1444)Boeing 737 800
    Ryanair (FR 1709)Boeing 737 800
  • Ryanair (FR 1444)
    • M
    • -
    • -
    • -
    • -
    • -
    • -
  • 07:00 BGY
    13:15 OPO
    7Hrs, 15m 1 Stop (BER)
  • BGYMilan Bergamo/Orio al Serio Airport 07:00 - OPO 13:15 7h 15m 1 Stop (BER) Berlin
  • BGYMilan Bergamo/Orio al Serio Airport 07:00
    BERBerlin Brandenburg Airport 10:50
  • BERBerlin Brandenburg Airport 08:40
    OPOPorto Airport 13:15
  • 7h 15m (2h 10m)
  • 1 Stop BER · Berlin 2h 10m
  • Ryanair (FR 3312)Boeing 737 800
    Ryanair (FR 2946)Boeing 737 Max 8 Passenger
  • Ryanair (FR 3312)
    • -
    • -
    • -
    • -
    • -
    • S
    • -
  • 07:30 BGY
    13:25 OPO
    6Hrs, 55m 1 Stop (STN)
  • BGYMilan Bergamo/Orio al Serio Airport 07:30 - OPO 13:25 6h 55m 1 Stop (STN) London
  • BGYMilan Bergamo/Orio al Serio Airport 07:30
    STNLondon Stansted Airport 11:00
  • STNLondon Stansted Airport 08:35
    OPOPorto Airport 13:25
  • 6h 55m (2h 25m)
  • 1 Stop STN · London 2h 25m
  • Ryanair (FR 2697)Boeing 737 800
    Ryanair (FR 1275)Boeing 737 Max 8 Passenger
  • Ryanair (FR 2697)
    • M
    • -
    • -
    • -
    • -
    • -
    • -
  • 08:45 MXP
    14:55 OPO
    7Hrs, 10m 1 Stop (MAD)
  • MXPMilan Malpensa Airport 08:45 - OPO 14:55 7h 10m 1 Stop (MAD) Madrid
  • MXPMilan Malpensa Airport 08:45
    MADMadrid Barajas Airport 14:35
  • MADMadrid Barajas Airport 11:10
    OPOPorto Airport 14:55
  • 7h 10m (3h 25m)
  • 1 Stop MAD · Madrid 3h 25m
  • Ryanair (FR 2752)Boeing 737 800
    Ryanair (FR 5482)Boeing 737 800
  • Ryanair (FR 2752)
    • -
    • -
    • -
    • -
    • -
    • S
    • -
  • 10:20 BGY
    16:05 OPO
    6Hrs, 45m 1 Stop (STN)
  • BGYMilan Bergamo/Orio al Serio Airport 10:20 - OPO 16:05 6h 45m 1 Stop (STN) London
  • BGYMilan Bergamo/Orio al Serio Airport 10:20
    STNLondon Stansted Airport 13:40
  • STNLondon Stansted Airport 11:25
    OPOPorto Airport 16:05
  • 6h 45m (2h 15m)
  • 1 Stop STN · London 2h 15m
  • Ryanair (FR 2735)Boeing 737 800
    Ryanair (FR 7700)Boeing 737 Max 8 Passenger
  • Ryanair (FR 2735)
    • -
    • -
    • -
    • -
    • -
    • -
    • S
  • 11:30 BGY
    16:05 OPO
    5Hrs, 35m 1 Stop (STN)
  • BGYMilan Bergamo/Orio al Serio Airport 11:30 - OPO 16:05 5h 35m 1 Stop (STN) London
  • BGYMilan Bergamo/Orio al Serio Airport 11:30
    STNLondon Stansted Airport 13:40
  • STNLondon Stansted Airport 12:35
    OPOPorto Airport 16:05
  • 5h 35m (1h 05m)
  • 1 Stop STN · London 1h 05m
  • Ryanair (FR 2739)Boeing 737 800
    Ryanair (FR 7700)Boeing 737 Max 8 Passenger
  • Ryanair (FR 2739)
    • -
    • -
    • -
    • -
    • -
    • -
    • S
  • 11:55 MXP
    18:15 OPO
    7Hrs, 20m 1 Stop (LIS)
  • MXPMilan Malpensa Airport 11:55 - OPO 18:15 7h 20m 1 Stop (LIS) Lisbon
  • MXPMilan Malpensa Airport 11:55
    LISLisbon Airport 17:15
  • LISLisbon Airport 13:50
    OPOPorto Airport 18:15
  • 7h 20m (3h 25m)
  • 1 Stop LIS · Lisbon 3h 25m
  • TAP Air Portugal (TP 823)Airbus A321 Neo
    TAP Air Portugal (TP 1932)Airbus
  • TAP Air Portugal (TP 823)
    • -
    • T
    • -
    • -
    • -
    • -
    • -
  • 12:05 MXP
    16:55 OPO
    5Hrs, 50m 1 Stop (CMN)
  • MXPMilan Malpensa Airport 12:05 - OPO 16:55 5h 50m 1 Stop (CMN) Casablanca
  • MXPMilan Malpensa Airport 12:05
    CMNCasablanca Mohammed V Airport 16:10
  • CMNCasablanca Mohammed V Airport 15:10
    OPOPorto Airport 16:55
  • 5h 50m (1h)
  • 1 Stop CMN · Casablanca 1h
  • Royal Air Maroc (AT 955)Boeing 737 800
    Royal Air Maroc (AT 996)Embraer Emb E90
  • Royal Air Maroc (AT 955)
    • -
    • -
    • -
    • -
    • -
    • -
    • S
  • 12:40 BGY
    19:00 OPO
    7Hrs, 20m 1 Stop (BCN)
  • BGYMilan Bergamo/Orio al Serio Airport 12:40 - OPO 19:00 7h 20m 1 Stop (BCN) Barcelona
  • BGYMilan Bergamo/Orio al Serio Airport 12:40
    BCNBarcelona Airport 18:00
  • BCNBarcelona Airport 14:15
    OPOPorto Airport 19:00
  • 7h 20m (3h 45m)
  • 1 Stop BCN · Barcelona 3h 45m
  • Ryanair (FR 3319)Boeing 737 Max 8 Passenger
    Ryanair (FR 4587)Boeing 737 800
  • Ryanair (FR 3319)
    • -
    • -
    • -
    • -
    • -
    • -
    • S
  • 14:45 MXP
    21:00 OPO
    7Hrs, 15m 1 Stop (STN)
  • MXPMilan Malpensa Airport 14:45 - OPO 21:00 7h 15m 1 Stop (STN) London
  • MXPMilan Malpensa Airport 14:45
    STNLondon Stansted Airport 18:35
  • STNLondon Stansted Airport 15:50
    OPOPorto Airport 21:00
  • 7h 15m (2h 45m)
  • 1 Stop STN · London 2h 45m
  • Ryanair (FR 8718)Boeing 737 800
    Ryanair (FR 7706)Boeing 737 Max 8 Passenger
  • Ryanair (FR 8718)
    • -
    • -
    • -
    • -
    • F
    • -
    • -
  • 15:05 MXP
    21:20 OPO
    7Hrs, 15m 1 Stop (BCN)
  • MXPMilan Malpensa Airport 15:05 - OPO 21:20 7h 15m 1 Stop (BCN) Barcelona
  • MXPMilan Malpensa Airport 15:05
    BCNBarcelona Airport 20:25
  • BCNBarcelona Airport 16:40
    OPOPorto Airport 21:20
  • 7h 15m (3h 45m)
  • 1 Stop BCN · Barcelona 3h 45m
  • Vueling Airlines (VY 6339)Airbus
    Vueling Airlines (VY 8478)Airbus Industrie A320 Sharklets
  • Vueling Airlines (VY 6339)
    • M
    • -
    • -
    • -
    • -
    • -
    • -
  • 15:20 BGY
    20:20 OPO
    6Hrs, 00m 1 Stop (VIE)
  • BGYMilan Bergamo/Orio al Serio Airport 15:20 - OPO 20:20 6h 1 Stop (VIE) Vienna
  • BGYMilan Bergamo/Orio al Serio Airport 15:20
    VIEVienna Airport 17:50
  • VIEVienna Airport 16:45
    OPOPorto Airport 20:20
  • 6h (1h 05m)
  • 1 Stop VIE · Vienna 1h 05m
  • Ryanair (FR 7361)Boeing 737 800
    Ryanair (FR 751)Boeing 737 Max 8 Passenger
  • Ryanair (FR 7361)
    • -
    • -
    • -
    • -
    • -
    • -
    • S
  • 15:55 MXP
    22:05 OPO
    7Hrs, 10m 1 Stop (AGP)
  • MXPMilan Malpensa Airport 15:55 - OPO 22:05 7h 10m 1 Stop (AGP) Malaga
  • MXPMilan Malpensa Airport 15:55
    AGPMalaga Airport 21:35
  • AGPMalaga Airport 18:35
    OPOPorto Airport 22:05
  • 7h 10m (3h)
  • 1 Stop AGP · Malaga 3h
  • Ryanair (FR 4948)Boeing 737 Max 8 Passenger
    Ryanair (FR 7635)Boeing 737 Max 8 Passenger
  • Ryanair (FR 4948)
    • -
    • -
    • -
    • -
    • F
    • -
    • -
  • 17:15 MXP
    21:20 OPO
    5Hrs, 05m 1 Stop (BCN)
  • MXPMilan Malpensa Airport 17:15 - OPO 21:20 5h 05m 1 Stop (BCN) Barcelona
  • MXPMilan Malpensa Airport 17:15
    BCNBarcelona Airport 20:25
  • BCNBarcelona Airport 18:55
    OPOPorto Airport 21:20
  • 5h 05m (1h 30m)
  • 1 Stop BCN · Barcelona 1h 30m
  • Vueling Airlines (VY 6333)Airbus Industrie A320 Sharklets
    Vueling Airlines (VY 8478)Airbus Industrie A320 Sharklets
  • Vueling Airlines (VY 6333)
    • -
    • -
    • W
    • -
    • -
    • -
    • -
  • 17:20 BGY
    21:35 OPO
    5Hrs, 15m 1 Stop (EIN)
  • BGYMilan Bergamo/Orio al Serio Airport 17:20 - OPO 21:35 5h 15m 1 Stop (EIN) Eindhoven
  • BGYMilan Bergamo/Orio al Serio Airport 17:20
    EINEindhoven Airport 19:55
  • EINEindhoven Airport 19:00
    OPOPorto Airport 21:35
  • 5h 15m (55m)
  • 1 Stop EIN · Eindhoven 55m
  • Ryanair (FR 3460)Boeing 737 800
    Ryanair (FR 7473)Boeing 737 Max 8 Passenger
  • Ryanair (FR 3460)
    • M
    • -
    • -
    • -
    • -
    • -
    • -
  • 17:55 BGY
    21:55 OPO
    5Hrs, 00m 1 Stop (LUX)
  • BGYMilan Bergamo/Orio al Serio Airport 17:55 - OPO 21:55 5h 1 Stop (LUX) Luxembourg
  • BGYMilan Bergamo/Orio al Serio Airport 17:55
    LUXLuxembourg Airport 20:20
  • LUXLuxembourg Airport 19:15
    OPOPorto Airport 21:55
  • 5h (1h 05m)
  • 1 Stop LUX · Luxembourg 1h 05m
  • Ryanair (FR 3492)Boeing 737 Max 8 Passenger
    Ryanair (FR 4399)Boeing 737 Max 8 Passenger
  • Ryanair (FR 3492)
    • -
    • -
    • -
    • -
    • F
    • -
    • -
No Schedules Sorry, there are no schedules matching your filters. Try removing one. reset
What’s the fastest flight time from Milan to Porto?

The fastest flight time for direct flights from Milan to Porto is 2 hours 40 minutes. Check latest flight schedules & prices on Wego.

What’s the most popular airline flying from Milan to Porto?

The most popular airline flying from Milan to Porto is Ryanair. Find the latest flight deals on Wego.

How far is Porto from Milan?

The flight distance between Milan and Porto is 1515km. Check all available flights on Wego.

When is the earliest and latest flight of the day?

The earliest flight of the day departs at 05:45. The last flight of the day departs at 05:45. See the full list of flight times on Wego.

How many airlines offer direct flights from Milan to Porto?

There are 1 airlines that offer direct flights from Milan to Porto. Find out the list of airlines on Wego.