Lake Garda has no airport of its own, so an arrival from Milan is a two-leg journey. From Malpensa the quickest route is the Malpensa Express to Milano Centrale, 15.00 euro for an adult and about 51 minutes, then a regional train to Desenzano del Garda-Sirmione at 10.50 euro in about 1 hour 23 minutes (Trenord, 2026; Trenitalia, 2026).
Bergamo Orio al Serio works out cheaper. The airport to Bergamo city bus is charged at the three-zone fare of 3.00 euro, and a regional train from Bergamo reaches Desenzano for 7.70 euro with one change at Brescia (ATB, 2026; Trenitalia, 2026). Linate is the smallest of the three and has a metro line into Milan, which puts it on the same footing as Malpensa once you are at Milano Centrale (ATM, 2026).
Every figure on this page was taken from the operators' own published fares, or from Trenitalia's booking system for a mid-November 2026 weekday, on 4 November 2026. Fares on the fast trains move with the date, so treat those as the price found rather than a fixed tariff.
Which Milan airport works out cheapest?
The arithmetic is worth doing before you book the flight, because the airport leg costs more than the lake leg.
From Malpensa the two legs come to 25.50 euro: 15.00 euro on the Malpensa Express to Milano Centrale, then 10.50 euro on the regional train to Desenzano del Garda-Sirmione (Trenord, 2026; Trenitalia, 2026). From Bergamo Orio al Serio the same journey costs 10.70 euro, because the airport bus into Bergamo is charged at ATB's three-zone fare of 3.00 euro and the regional train from Bergamo to Desenzano is 7.70 euro (ATB, 2026; Trenitalia, 2026). From Linate the metro ticket is 2.20 euro, after which you are at the same starting point as a Malpensa passenger, less the 15.00 euro train (ATM, 2026).
Time runs the other way. The Bergamo train takes about 1 hour 42 minutes to Desenzano and changes at Brescia, while Milano Centrale to Desenzano is a single train of about 1 hour 23 minutes (Trenitalia, 2026). A Malpensa arrival is therefore slower overall but simpler, and a Bergamo arrival is cheaper but involves two changes.
Malpensa to Lake Garda, step by step
The Malpensa Express is the train from both terminals into Milan. A ticket to or from any Milano station costs 15.00 euro for an adult and 7.50 euro for a child aged 4 to 13, and children up to 3 travel free with a paying parent (Trenord, 2026). A Malpensa Family ticket covering two adults and two children aged 4 to 17 costs 36.00 euro in total and is valid on any Malpensa Express journey (Trenord, 2026).
Use Milano Centrale rather than Milano Cadorna. The Centrale route runs to Terminal 1 in about 51 minutes, calling at Porta Garibaldi, Milano Nord Bovisa, Saronno, Rescaldina, Castellanza, Busto Arsizio Nord and Ferno-Lonate Pozzolo. The Cadorna route is faster, about 37 minutes with departures every 30 minutes, but Cadorna is not on the line towards Verona (Trenord, 2026).
From Milano Centrale the regional train to Desenzano del Garda-Sirmione was quoted at 10.50 euro for about 1 hour 23 minutes, and the one to Peschiera del Garda at 12.00 euro for about 1 hour 32 minutes (Trenitalia, 2026). A coach alternative exists: Malpensa Shuttle quotes its Malpensa to Centrale ticket from 19.90 euro, bundled with a MilanoCard that includes urban transport in Milan (Malpensa Shuttle, 2026).
Bergamo Orio al Serio to Lake Garda
There are two ways out of Bergamo airport, and they lead in opposite directions.
The local route is the ATB bus into Bergamo city, which is charged at fare C, the three-zone fare: 3.00 euro for a single valid 90 minutes, 25.00 euro for a ten-trip ticket (ATB, 2026). ATB's tourist tickets cover the whole network including the airport link and run to 8.50 euro for 24 hours and 14.50 euro for 72 hours, with one piece of luggage up to 40 by 80 by 120 centimetres included (ATB, 2026). From Bergamo station a regional train reaches Desenzano del Garda-Sirmione in about 1 hour 42 minutes for 7.70 euro, changing at Brescia, and the Brescia to Desenzano leg on its own costs 3.80 euro for about 15 minutes (Trenitalia, 2026).
The other route is the Orio Shuttle coach to Milano Centrale, which the operator gives as about 50 minutes. Under the timetable in force since 6 July 2026 it leaves the airport roughly every 30 minutes from 00.50 to 23.50, every day of the year (Orio Shuttle, 2026). The operator publishes no fare on its site, so buy online and check the price at the time. That route makes sense only if you want Milan itself.
Linate and the metro
Linate sits closest to central Milan of the three airports and is served by metro line M4, which runs from the airport across the centre to San Cristoforo (ATM, 2026).
ATM's standard ticket for the Mi1-Mi3 zones costs 2.20 euro and runs for 90 minutes, which is the ticket a Linate arrival needs. A daily ticket is 7.60 euro, a three-day ticket 15.50 euro and a ten-trip carnet 19.50 euro. All of these are valid on the metro, buses, trams, trolleybuses and the S suburban rail lines run by Trenord inside those zones (ATM, 2026).
The M4 does not call at Milano Centrale, so a Lake Garda passenger has to change onto another line in the centre. Check the interchange on ATM's own route information on the day, because the metro map is the part of this journey that changes most often. Once at Milano Centrale the onward fares are the same as for a Malpensa arrival: 10.50 euro to Desenzano del Garda-Sirmione or 12.00 euro to Peschiera del Garda (Trenitalia, 2026).
Desenzano or Peschiera: which station to aim for?
Both stations sit on the Milan to Venice main line at the southern end of the lake, and the choice decides which shore you land on.
Desenzano del Garda-Sirmione is on the Lombardy side and is the terminus of the lake's boat service, so it is the station to use for Sirmione, Salò and the western shore. Peschiera del Garda is in Veneto at the south-eastern corner, which puts it closer to Lazise, Bardolino and Garda, and on the bus network run from Verona rather than Brescia.
Fares and times differ enough to matter. On the weekday checked, the regional train from Milano Centrale was 10.50 euro and about 1 hour 23 minutes to Desenzano, and 12.00 euro and about 1 hour 32 minutes to Peschiera. The fast trains cut that sharply: a Frecciarossa reached Desenzano in 51 minutes at 23.90 euro and Peschiera in 57 minutes at 24.90 euro, and an Intercity reached Peschiera in 1 hour 7 minutes at 18.90 euro (Trenitalia, 2026). Those fast-train prices are dynamic and rise as the train fills, while the regional fare is fixed, so a late booking widens the gap.
One ticket for the whole chain
Lombardy sells a regional pass, Io Viaggio Ovunque in Lombardia, that covers the airport leg and the lake leg together. It costs 17.50 euro for one day, 29.00 euro for two days, 35.00 euro for three days and 46.50 euro for seven days, at fares ATB publishes as valid from 1 September 2023 (ATB, 2026).
It is valid on urban and suburban buses, trams, metro lines and on trains classified R, RV, RE and S in second class, as well as on the Malpensa Express, anywhere inside Lombardy (ATB, 2026). A Malpensa arrival heading for Desenzano therefore pays 17.50 euro for a chain that costs 25.50 euro in single tickets, because Desenzano del Garda-Sirmione is in the province of Brescia and so inside the region.
Peschiera del Garda is in Veneto, which puts it outside the pass, so a Peschiera arrival has to buy the last leg separately. One further saving applies across the same network: under Io Viaggio in Famiglia a child who has not yet turned 14 travels free on Lombardy public transport when accompanied by a relative holding a valid ticket (ATB, 2026). That sits oddly beside the 7.50 euro child fare Trenord charges on the Malpensa Express, which is a separate airport tariff.
Book it
Booking through these links may earn Gardaround a commission at no extra cost to you. Partners never influence what we write. Disclosure