Rome2Rio

How to get fromMilan to Portoby plane, train, bus, train (Trenitalia, Renfe) or car

Find Transport to Porto

See all options

There are 11 ways to get from Milan to Porto by plane, train, bus, train (Trenitalia, Renfe), or car

Select an option below to see step-by-step directions and to compare ticket prices and travel times in Rome2Rio's travel planner.

  1. Fly from Milan Linate Airport

    best
    1. Fly from Milan Linate Airport (LIN) to Francisco De Sá Carneiro Airport (OPO)plane plane LIN - OPO
    5h 24m
    €59–235
  2. Train to Milano Malpensa Airport, fly

    cheapest
    1. Take the train from Milano Porta Garibaldi to Malpensa Aeroporto T1train train
    2. Fly from Milano Malpensa Airport (MXP) to Francisco De Sá Carneiro Airport (OPO)plane plane MXP - OPO
    6h
    €51–178
  3. Train, bus via Lyon

    1. Take the train from Milano Centrale to Chambery Challes Les Eauxtrain train Fr
    2. Take the bus from Chambéry - Bus Station to Lyon - Gerland Bus Stationbus bus
    3. Take the bus from Lyon - Gerland Bus Station to Porto - Terminal Intermodal de Campanhãbus bus
    27h 34m
    €157–302
  4. Train

    1. Take the train from Milano Centrale to Lyon Part Dieutrain train Fr
    2. Take the train from Lyon Part Dieu to Barcelona-Santstrain train
    3. Take the train from Barcelona-Sants to Vigo Urzaiztrain train Alv
    4. Take the train from Vigo Guixar to Porto Campanhatrain train Ic
    29h 5m
    €302–507
  5. Drive 1,868.1 km

    1. Drive from Milan to Portocar car 1,868.1 km
    19h 44m
    €288–416
  6. Bus to Il Caravaggio International Airport, fly

    1. Take the bus from Piazza Luigi di Savoia to Bergamo Airport Bus Stationbus bus
    2. Fly from Il Caravaggio International Airport (BGY) to Francisco De Sá Carneiro Airport (OPO)plane plane BGY - OPO
    6h 12m
    €61–228
  7. Train to Turin Caselle Airport, fly

    1. Take the train from Milano Centrale to Torino Porta di Susatrain train
    2. Fly from Turin Caselle Airport (TRN) to Francisco De Sá Carneiro Airport (OPO)plane plane TRN - OPO
    6h 41m
    €77–253
  8. Train to Zurich Airport, fly

    1. Take the train from Milano Centrale to Zuerich Hbtrain train
    2. Fly from Zurich Airport (ZRH) to Francisco De Sá Carneiro Airport (OPO)plane plane ZRH - OPO
    8h 43m
    €122–347
  9. Bus

    1. Take the bus from Milano, Autostazione Lampugnano to Lyonbus bus 480 / ...
    2. Take the bus from Lyon - Gerland Bus Station to Porto - Terminal Intermodal de Campanhãbus bus BlaBlaCar Bus
    28h
    €140–280
  10. Train, bus

    1. Take the train from Milano Centrale to Chambery Challes Les Eauxtrain train Fr
    2. Take the bus from Chambéry - Rue Dr Vernier to Porto - Hospital de São Joãobus bus Linha Lyon Express
    31h 25m
    €121–173
  11. Train, bus #2

    1. Take the train from Milano Centrale to Martignytrain train Ec
    2. Take the bus from Martigny to Portobus bus FlixBus N1157
    33h 36m
    €185–320

Milan to Porto by train and bus

Calendar5Weekly Services
Duration27h 34mAverage Duration
Ticket€157Cheapest Price
See schedules

Questions & Answers

What companies run services between Milan, Italy and Porto, Portugal?

easyJet and Iberia fly from Milan Linate Airport (LIN) to Francisco De Sá Carneiro Airport (OPO) 3 times a day. Alternatively, you can take a train from Milano Centrale to Porto Campanha via Lyon Part Dieu, Barcelona-Sants, Vigo Urzaiz, Avda. de García Barbón 28, Avda. de García Barbón 106, and Vigo Guixar in around 29h 5m.

Airlines
Train operators
Bus operators

Want to know more about travelling around Portugal

Rome2Rio's Travel Guide series provide vital information for the global traveller. Filled with useful and timely travel information, the guides answer all the hard questions - such as 'How do I buy a ticket?', 'Should I book online before I travel? ', 'How much should I expect to pay?', 'Do the trains and buses have Wifi?' - to help you get the most out of your next trip.

Related travel guides

Italy Travel Guides

Read the travel guideItaly Travel Guides

More Questions & Answers