- Must visit
Museu de Arte Contemporânea de Serralves
Major contemporary art museum in a landscaped park. Visit for Portuguese and international modern art in a calm setting.
Flights from Milan to Porto depart on average 82 times per day, taking around 5h 16m. Cheap flight tickets for this journey start at £28 if you book in advance.
There are 3 flights per day. The earliest flight runs at 02:50, the last at 23:55. The fastest flight covers the 1514 km distance in 2h 35m. July is the cheapest month to fly.
Distance 1514 km |
Average flight duration 5h 16m |
Cheapest ticket price £28 |
Flights per day 82 |
Direct flights 3 |
Fastest flight 2h 35m |
First flight 2:50 |
Last flight 23:55 |
Cheapest Month Jul |
Cheapest Day Sat |
High Season Jul - Sept |
Low Season Jan - Mar |
Busiest Day Tue |
Least Busy Day Wed |
Best time to book 77 days |
Cheapest price
£58
Average price
£315
Fastest journey
2 h 40 m
Average duration
3 h 29 m
Flights per day
94
Distance
1514 km
The best way to find a cheap flight ticket from Milan to Porto is to book your journey as far in advance as possible and to avoid travelling at rush hour.
The average ticket from Milan to Porto will cost around £315 if you buy it on the day, but you can find cheap flight tickets today for only £58.
Of the 94 flights that leave Milan for Porto every day 3 travel direct so it’s quite easy to avoid journeys where you’ll have to change along the way.
These direct flights cover the 1514 km distance in an average of 3 h 29 m but if you time it right, some flights will get you there in just 2 h 40 m .
The slowest flights will take 4 h 40 m and usually involve a change or two along the way, but you might be able to save a few pennies if you’re on a budget.
FR 8952
FR 4042
FR 6856
VY6345 · VY8482
TP827 · TP1920
FR 8952
FR 4042
FR 6856
UX1060 · UX1141
LX1629+
LX2064Omio recommends booking the flight as it is the most popular option from Milan to Porto among Omio's users. If you are prioritising price take the flight with prices starting from £28. For those with little time consider booking a flight which can get you there in 5h 16m. In case you are seeking to minimise your carbon footprint the coach is your best bet as it emits only 1.5 - 3.8kg. The ticket price range depends on the travel mode: a flight costs an average of £28, and a coach costs an average of £74.
Distance: 1514 km
Most popular Flight | Coach |
|---|---|
£108 Average Price Cheapest | £122 Average Price |
7h 16m Average total duration Fastest 5h 16m Onboard + 2h 0m Additional time* | 22h 41m Average total duration 22h 11m Onboard + 30m Additional time* |
4.5 - 9.1kg CO2 emissions | 1.5 - 3.8kg CO2 emissions Lowest |
![]() Most popular airline | ![]() Most popular bus company |
Direct Options | Direct Options |
Additional time: Average total travel duration to departure point, security checks and transfers.
The table below shows live departures for Milan to Porto flights for today, Friday 28 August. You can also manually refresh the results below to see updated flight journeys.
| Provider | Departs | Duration | Arrives | Changes | Tickets |
|---|---|---|---|---|---|
BA581+ BA7055+ IB1151 | 7:25 Milan Linate Airport | 9h35 | 16:00 Porto Airport | 2 changes | |
BA581+ BA2668 | 7:25 Milan Linate Airport | 14h05 | 20:30 Porto Airport | 1 change | |
BA591+ BA2668 | 7:25 Milan Malpensa Airport | 14h05 | 20:30 Porto Airport | 1 change | |
IB668 · IB1151 | 7:50 Milan Linate Airport | 9h10 | 16:00 Porto Airport | 1 change | |
IB668 · IB1149 | 7:50 Milan Linate Airport | 4h55 | 11:45 Porto Airport | 1 change | |
IB668 · IB1153 | 7:50 Milan Linate Airport | 13h10 | 20:00 Porto Airport | 1 change | |
EW7546+ EW7823 | 9:05 Milan Malpensa Airport | 8h55 | 17:00 Porto Airport | 1 change | |
SN3146 · SN3809 | 9:25 Milan Linate Airport | 7h35 | 16:00 Porto Airport | 1 change | |
AF1213 · AF1470 | 9:45 Milan Linate Airport | 9h30 | 18:15 Porto Airport | 1 change | |
AF1213 · AF1528 | 9:45 Milan Linate Airport | 6h40 | 15:25 Porto Airport | 1 change | |
AF1213 · AF1516 | 9:45 Milan Linate Airport | 13h05 | 21:50 Porto Airport | 1 change | |
VY6331 · VY8478 | 9:55 Milan Malpensa Airport | 7h15 | 16:10 Porto Airport | 1 change | |
VY6331 · VY8480 | 9:55 Milan Malpensa Airport | 12h25 | 21:20 Porto Airport | 1 change | |
IB5537 · IB5644 | 9:55 Milan Malpensa Airport | 12h25 | 21:20 Porto Airport | 1 change | |
IB5537 · IB5642 | 9:55 Milan Malpensa Airport | 7h15 | 16:10 Porto Airport | 1 change | |
IB672 · IB1153 | 10:25 Milan Malpensa Airport | 10h35 | 20:00 Porto Airport | 1 change | |
IB672 · IB1151 | 10:25 Milan Malpensa Airport | 6h35 | 16:00 Porto Airport | 1 change | |
LX1613+ LX2064 | 10:40 Milan Malpensa Airport | 8h50 | 18:30 Porto Airport | 1 change | |
LX1613+ LX4592 | 10:40 Milan Malpensa Airport | 7h40 | 17:20 Porto Airport | 1 change | |
BA7302+ BA2668 | 10:40 Milan Linate Airport | 10h50 | 20:30 Porto Airport | 1 change | |
KL1614 · KL1577 | 11:00 Milan Linate Airport | 12h15 | 22:15 Porto Airport | 1 change | |
KL1614 · KL1573 | 11:00 Milan Linate Airport | 5h30 | 15:30 Porto Airport | 1 change | |
KL1614 · KL1575 | 11:00 Milan Linate Airport | 9h15 | 19:15 Porto Airport | 1 change | |
UX1066 · UX1147 | 11:05 Milan Malpensa Airport | 20h45 | 6:50 Porto Airport | 1 change | |
UX1066 · UX1143 | 11:05 Milan Malpensa Airport | 5h10 | 15:15 Porto Airport | 1 change | |
UX1066 · UX1141 | 11:05 Milan Malpensa Airport | 9h15 | 19:20 Porto Airport | 1 change | |
BA569+ BA2668 | 11:10 Milan Linate Airport | 10h20 | 20:30 Porto Airport | 1 change | |
U25453 | 11:20 Milan Linate Airport | 2h40 | 13:00 Porto Airport | 0 changesdirect | |
AF1331 · AF1516 | 11:25 Milan Malpensa Airport | 11h25 | 21:50 Porto Airport | 1 change | |
AF1331 · AF1428 | 11:25 Milan Malpensa Airport | 22h05 | 8:30 Porto Airport | 1 change | |
AF1331 · AF1470 | 11:25 Milan Malpensa Airport | 7h50 | 18:15 Porto Airport | 1 change | |
AF1331 · AF1528 | 11:25 Milan Malpensa Airport | 5h00 | 15:25 Porto Airport | 1 change | |
IB664 · IB1153 | 11:40 Milan Linate Airport | 9h20 | 20:00 Porto Airport | 1 change | |
IB664 · IB1151 | 11:40 Milan Linate Airport | 5h20 | 16:00 Porto Airport | 1 change | |
TP823 · TP1932 | 11:50 Milan Malpensa Airport | 8h05 | 18:55 Porto Airport | 1 change | |
TP823 · TP1934 | 11:50 Milan Malpensa Airport | 9h35 | 20:25 Porto Airport | 1 change | |
FR 4042 | 12:20 Milan Bergamo Orio al Serio Airport | 2h45 | 14:05 Porto Airport | 0 changesdirect | |
AF1413 · AF1470 | 12:35 Milan Linate Airport | 6h40 | 18:15 Porto Airport | 1 change | |
AF1413 · AF1516 | 12:35 Milan Linate Airport | 10h15 | 21:50 Porto Airport | 1 change | |
KL1616 · KL1577 | 13:00 Milan Linate Airport | 10h15 | 22:15 Porto Airport | 1 change | |
KL1616 · KL1575 | 13:00 Milan Linate Airport | 7h15 | 19:15 Porto Airport | 1 change | |
VY6343 · VY8480 | 13:25 Milan Malpensa Airport | 8h55 | 21:20 Porto Airport | 1 change | |
IB5547 · IB5644 | 13:25 Milan Malpensa Airport | 8h55 | 21:20 Porto Airport | 1 change | |
BA571+ BA2668 | 13:40 Milan Linate Airport | 7h50 | 20:30 Porto Airport | 1 change | |
IB674 · IB1153 | 14:25 Milan Malpensa Airport | 6h35 | 20:00 Porto Airport | 1 change | |
AF1013 · AF1516 | 14:55 Milan Linate Airport | 7h55 | 21:50 Porto Airport | 1 change | |
AF1013 · AF1428 | 14:55 Milan Linate Airport | 18h35 | 8:30 Porto Airport | 1 change | |
LX2064+ LX1629 | 14:55 Milan Malpensa Airport | 4h35 | 18:30 Porto Airport | 1 change | |
LH275 · LH1180 | 15:25 Milan Linate Airport | 8h30 | 22:55 Porto Airport | 1 change | |
UX1060 · UX1141 | 15:45 Milan Malpensa Airport | 4h35 | 19:20 Porto Airport | 1 change | |
UX1060 · UX1145 | 15:45 Milan Malpensa Airport | 20h05 | 10:50 Porto Airport | 1 change | |
UX1060 · UX1147 | 15:45 Milan Malpensa Airport | 16h05 | 6:50 Porto Airport | 1 change | |
VY6333 · VY8480 | 16:45 Milan Malpensa Airport | 5h35 | 21:20 Porto Airport | 1 change | |
IB5539 · IB5644 | 16:45 Milan Malpensa Airport | 5h35 | 21:20 Porto Airport | 1 change | |
KL1618 · KL1577 | 16:50 Milan Linate Airport | 6h25 | 22:15 Porto Airport | 1 change | |
LH1857 · LH1788 | 17:20 Milan Malpensa Airport | 7h05 | 23:25 Porto Airport | 1 change | |
TP825 · TP1938 | 17:25 Milan Malpensa Airport | 8h15 | 0:40 Porto Airport | 1 change | |
TP825 · TP1920 | 17:25 Milan Malpensa Airport | 15h35 | 8:00 Porto Airport | 1 change | |
TP825 · TP1936 | 17:25 Milan Malpensa Airport | 6h35 | 23:00 Porto Airport | 1 change | |
LH1180+ LH277 | 18:10 Milan Linate Airport | 5h45 | 22:55 Porto Airport | 1 change | |
UX1062 · UX1147 | 18:15 Milan Malpensa Airport | 13h35 | 6:50 Porto Airport | 1 change | |
UX1062 · UX1143 | 18:15 Milan Malpensa Airport | 22h00 | 15:15 Porto Airport | 1 change | |
UX1062 · UX1145 | 18:15 Milan Malpensa Airport | 17h35 | 10:50 Porto Airport | 1 change | |
VY6335 · VY8476 | 18:20 Milan Malpensa Airport | 14h40 | 8:00 Porto Airport | 1 change | |
LH1780+ LH6976+ LH1855 | 18:25 Milan Linate Airport | 7h15 | 0:40 Porto Airport | 2 changes | |
LH1788+ LH1855 | 18:25 Milan Linate Airport | 6h00 | 23:25 Porto Airport | 1 change | |
AF1731 · AF1470 | 18:35 Milan Malpensa Airport | 24h40 | 18:15 Porto Airport | 1 change | |
AF1731 · AF1528 | 18:35 Milan Malpensa Airport | 21h50 | 15:25 Porto Airport | 1 change | |
AF1731 · AF1428 | 18:35 Milan Malpensa Airport | 14h55 | 8:30 Porto Airport | 1 change | |
FR 4018 | 18:40 Milan Malpensa Airport | 2h35 | 20:15 Porto Airport | 0 changesdirect | |
LH255 · LH1180 | 18:50 Milan Malpensa Airport | 5h05 | 22:55 Porto Airport | 1 change | |
FR 4638 | 19:15 Milan Bergamo Orio al Serio Airport | 2h45 | 21:00 Porto Airport | 0 changesdirect | |
LX1623 · LX2068 | 19:25 Milan Malpensa Airport | 5h45 | 0:10 Porto Airport | 1 change | |
TP827 · TP1920 | 20:00 Milan Malpensa Airport | 13h00 | 8:00 Porto Airport | 1 change | |
TP827 · TP1938 | 20:00 Milan Malpensa Airport | 5h40 | 0:40 Porto Airport | 1 change | |
TP827 · TP1922 | 20:00 Milan Malpensa Airport | 14h00 | 9:00 Porto Airport | 1 change | |
AF1313 · AF1428 | 20:45 Milan Linate Airport | 12h45 | 8:30 Porto Airport | 1 change | |
VY6345 · VY8476 | 21:40 Milan Malpensa Airport | 11h20 | 8:00 Porto Airport | 1 change | |
VY6337 · VY8482 | 23:50 Milan Malpensa Airport | 14h15 | 13:05 Porto Airport | 1 change | |
VY6337 · VY8476 | 23:50 Milan Malpensa Airport | 9h10 | 8:00 Porto Airport | 1 change | |
TP829 · TP1928 | 5:50 Milan Malpensa Airport | 9h40 | 14:30 Porto Airport | 1 change | |
TP829 · TP1926 | 5:50 Milan Malpensa Airport | 5h45 | 10:35 Porto Airport | 1 change | |
LX2804 · LX2078+ LX1639 | 5:50 Milan Malpensa Airport | 8h30 | 13:20 Porto Airport | 2 changes | |
LX2066+ LX1639 | 5:50 Milan Malpensa Airport | 6h35 | 11:25 Porto Airport | 1 change | |
LH5639+ LH1176 | 6:15 Milan Malpensa Airport | 6h00 | 11:15 Porto Airport | 1 change | |
LH5639+ LH1166+ LH6968 | 6:15 Milan Malpensa Airport | 9h15 | 14:30 Porto Airport | 2 changes | |
AF1733 · AF1528 | 6:25 Milan Linate Airport | 10h00 | 15:25 Porto Airport | 1 change | |
AF1733 · AF1470 | 6:25 Milan Linate Airport | 12h50 | 18:15 Porto Airport | 1 change | |
AF1733 · AF1516 | 6:25 Milan Linate Airport | 16h40 | 22:05 Porto Airport | 1 change | |
KL1612 · KL1577 | 6:40 Milan Linate Airport | 16h35 | 22:15 Porto Airport | 1 change | |
KL1612 · KL1573 | 6:40 Milan Linate Airport | 9h50 | 15:30 Porto Airport | 1 change | |
AF1131 · AF1516 | 6:45 Milan Malpensa Airport | 16h20 | 22:05 Porto Airport | 1 change | |
AF1131 · AF1528 | 6:45 Milan Malpensa Airport | 9h40 | 15:25 Porto Airport | 1 change | |
AF1131 · AF1470 | 6:45 Milan Malpensa Airport | 12h30 | 18:15 Porto Airport | 1 change | |
AF1131 · AF1428 | 6:45 Milan Malpensa Airport | 26h40 | 8:25 Porto Airport | 1 change | |
LH281+ LH1176 | 6:50 Milan Linate Airport | 5h25 | 11:15 Porto Airport | 1 change | |
LH281+ LH1166+ LH6968 | 6:50 Milan Linate Airport | 8h40 | 14:30 Porto Airport | 2 changes | |
This is the last flight of the day. | |||||
Find all the dates and times for this journey
Compare coach and flight prices over the next three weeks. See the best deals at a glance, find the lowest fares, and choose the option that fits your budget.
Discover the best of Porto — top attractions, local food, transport tips, budget advice, and currency essentials. Plan your perfect Porto trip today.
Major contemporary art museum in a landscaped park. Visit for Portuguese and international modern art in a calm setting.
Historic prison building showing Portuguese photography from the nineteenth century onwards. Admission is normally free.
Museum on Portuguese discoveries and maritime trade with full-scale scenes and interactive displays, suitable for families and first-time visitors.
Steep medieval quarter by the Douro with colourful houses, river views and lively lanes. Ideal for walking and classic Porto atmosphere.
Terraced riverside garden with one of Porto’s best skyline viewpoints. Popular at sunset and easy to combine with the upper bridge walk.
Large urban park leading to the Atlantic coast. Excellent for walks, cycling, birdlife and a break from the busy historic centre.
Porto’s iconic sandwich layered with cured meats and steak, covered in melted cheese and a rich beer-based sauce, usually served with chips.
A slow-cooked tripe and white bean stew with pork, sausages and vegetables, strongly linked to Porto’s historic working-class cooking.
Salt cod baked with cream, onion and potato, then topped with cheese. Bacalhau dishes are central to Portuguese tradition and widely loved in Porto.
Historic riverside restaurant known for roast meats, game and old-school Porto cooking in a characterful dining room.
Elegant contemporary restaurant serving refined Portuguese dishes and tasting menus in a calm central setting.
Long-established seafood restaurant by the coast, popular for grilled fish, shellfish and a relaxed Matosinhos atmosphere.
Moderate for Western Europe; rooms, meals and local transport are usually cheaper than in Lisbon or many other major European city breaks.
Tipping is optional. In restaurants, round up or leave 5-10% for good service; cafés often just round up. Taxis are usually rounded up to the nearest euro.
Official public transport app
Aeroporto -> Trindade, Porto
Traveling from Italy's northern hub to northern Portugal could hardly be easier, thanks to numerous daily flights from Milan to Porto. Direct flights cover the 1,500 kilometer distance between the two cities in between two hours 35 minutes and two hours 45 minutes, while the fastest services with a change will take four hours 30 minutes. Travelers can expect a choice of 3-4 direct flights during the week, and four options on Saturdays and Sundays. And they will also have plenty of indirect flights to choose from, which could be suitable alternatives, giving travelers a tonne of choice when planning their vacation.
Two major airlines provide direct flights from Milan to Porto, meaning that travelers will have a mix of low cost and premium flights to choose from. TAP operates a year-round schedule and provides the most frequent service, while the budget operator Ryanair offers an alternative. If direct flights with those dependable airlines aren't available, indirect options can be booked with a diverse range of airlines, including Iberia and Brussels Airlines. Both fly to Porto with a single stop, generally in Madrid or Brussels.
When they need to fly from Milan to Porto, travelers won't generally need to spend too long onboard a plane. The direct journey time between the two cities fluctuates a little, but will be between two hours 35 minutes and two hours 45 minutes. When passengers choose indirect journeys, flight times will be slightly extended, but should still be manageable in many cases. The fastest indirect flights take four hours 30 minutes to reach Porto, and many take less than six hours. However, there will be a few with journey times above 10 hours, meaning that customers should take care to book the fastest services possible.
Flights leave Milan for Porto every day of the year, and there should be convenient departures for those who need to travel in the morning, afternoon, or evening. During the week, travelers can choose between 3-4 direct flights, and there will also be four options on Saturdays and Sundays. These direct flights will be complemented by 3-4 indirect options with journey times of under five hours, and many more with slightly longer journey durations.
Departure airports: TAP flights to Porto will depart from Milan Malpensa Airport (MXP). The best way to get there is via the Malpensa Express, which runs from Milan Centrale. Extensive parking is also available, for both short and long term stays. Some Ryanair flights leave from Bergamo Orio al Serio (BGY). Terravision buses run from central Milan, while there are parking lots on-site. Both airports offer free WiFi, as well as food, drink, and shopping opportunities. Travelers should be sure to plan their route to either airport in advance, particularly for early flights, as traffic and limited nighttime transport options can affect the route.
Arrival airport: All flights from Milan to Porto will arrive at Porto Airport (OPO). metro rail services run directly from the airport to central Porto, along with various local buses. Free WiFi is available for all visitors, making taxi bookings relatively easy, while car hire outlets are also present, including Avis, Budget, Europcar, and Sixt.
Find answers to the most common questions about traveling from Milan to Porto by flight. From journey times and ticket prices to direct connections, first and last departures, and even whether the route is scenic, our FAQs cover everything you need to plan your trip. Whether you’re looking for the fastest flight, the cheapest option, or tips for making the most of your visit at Porto, this guide helps you travel smarter and with confidence.

Most Milan to Porto flights use the Milan Malpensa Airport to Porto Airport airport pair. Use this guide to compare Milan and Porto airports on this route, check city-centre transport, alongside checking practicalities like airport facilities and services.
Milan Malpensa Airport is 2 km from Milan city centre. Public transport options include:
Milan Malpensa Airport has practical services for this route, including Wifi, Shopping, Parking, ATM, Taxis, Accessibility, WC, Shower, Lounge and Lost and Found Office.
Free Wi-Fi available throughout the airport. ATMs are located in both terminals, near check-inas and gates.
Lost and found is available at the station.
Available at Milan Malpensa Airport: Parking, Taxis, WC.
Accessibility facilities are available at Milan Malpensa Airport: Elevators, ramps.
Milan Linate Airport is 6 km from Milan city centre. Public transport options include:
Milan Linate Airport has practical services for this route, including Wifi, Shopping, Parking, ATM, Taxis, Accessibility, WC, Shower, Lounge and Lost and Found Office.
Free Wi-Fi available throughout the airport. ATMs are located in the arrivals and departures areas.
Lost and found is available at the station.
Available at Milan Linate Airport: Parking, Taxis, WC.
Accessibility facilities are available at Milan Linate Airport: Ramps, assistance.
Milan Bergamo Orio al Serio Airport is 1 km from Milan city centre. Public transport options include:
Milan Bergamo Orio al Serio Airport has practical services for this route, including Wifi, Shopping, Parking, ATM, Taxis, Accessibility, WC, Shower, Lounge and Lost and Found Office.
Free Wi-Fi available throughout the airport. ATMs are located in the arrivals and departures areas.
Lost and found is available at the station.
Available at Milan Bergamo Orio al Serio Airport: Parking, Taxis, WC.
Accessibility facilities are available at Milan Bergamo Orio al Serio Airport: Elevators, ramps.
Porto Airport is 1 km from Porto city centre. Public transport options include:
Porto Airport has practical services for this route, including Wifi, Shopping, Parking, ATM, Taxis, Accessibility, WC, Shower, Lounge and Lost and Found Office.
Free Wi-Fi available throughout the airport. ATMs are located in arrivals and departures.
Lost and found is available at the station.
Available at Porto Airport: Parking, Taxis, WC.
Accessibility facilities are available at Porto Airport: Elevators, ramps.
Here are some other resources that might have the information you need