Milan has two ski airports on opposite sides of the city, and they point at different mountains. Malpensa, to the west, is the airport for the Valais and the Aosta valley: Saas-Fee is 81 km away, Zermatt 87 km, Cervinia 91 km, with 96 resorts within 250 km in our database. Bergamo, to the east, is the airport for the Valtellina, Trentino and the Engadin: Aprica is 63 km away, St. Moritz 93 km, Livigno 102 km, with 101 resorts within 250 km. Neither has a resort within an hour, but both put some of the highest skiing in the Alps within two. This guide ranks the 20 closest to each and says which airport to fly into for which mountain.
Key takeaways
- Malpensa (MXP): 96 resorts within 250 km. Closest: Saas-Fee 81 km, Zermatt 87 km, Cervinia 91 km. Everything in the top 20 except Aprica is in Switzerland or the Aosta valley.
- Bergamo (BGY): 101 resorts within 250 km. Closest: Aprica 63 km, St. Moritz 93 km, Passo Tonale 94 km, Livigno 102 km. Eight of the top 20 are Italian.
- Highest skiing near Milan: Zermatt and Cervinia (3,883 m), Saas-Fee (3,573 m), the 4 Vallées (3,330 m), St. Moritz (3,303 m), Passo Tonale and Bormio (about 3,010 m).
- Cheapest passes: Bardonecchia €52, Aprica €57, Pila €58, Sauze d’Oulx and Sestriere €58.50, Bormio €59, Cervinia €63. Swiss passes run from 52 CHF at Bellwald to 99.50 CHF at St. Moritz.
- The Italian median day pass is €72 against Switzerland’s €87; Cervinia at €63 is the value entry to the Matterhorn area.
The 20 closest ski resorts to Milan Malpensa (MXP)
| # | Resort | Country · ski area | Slopes | Lifts | Top | Day pass | Km from MXP |
|---|---|---|---|---|---|---|---|
| 1 | Saas-Fee | Switzerland · Saas-Fee | 100 km | 22 | 3,573 m | 84 CHF, about €89 | 81 |
| 2 | Zermatt | Switzerland · Zermatt-Cervinia | 322 km | 52 | 3,883 m | 96 CHF, about €102 | 87 |
| 3 | Cervinia | Italy · Zermatt-Cervinia | 322 km | 52 | 3,883 m | €63 (Italian side) | 91 |
| 4 | Bettmeralp | Switzerland · Aletsch Arena | 104 km | 35 | 2,869 m | 84 CHF, about €89 | 97 |
| 5 | Bellwald | Switzerland · Bellwald | 20 km | 5 | 2,560 m | 52 CHF, about €55 | 100 |
| 6 | Zinal | Switzerland · Val d’Anniviers | 115 km | 19 | 2,895 m | 73 CHF*, about €77 | 102 |
| 7 | Andermatt | Switzerland · SkiArena Andermatt-Sedrun | 180 km | 22 | 2,963 m | 99 CHF*, about €105 | 110 |
| 8 | Pila | Italy · Pila | 70 km | 11 | 2,700 m | €58* | 112 |
| 9 | Sedrun | Switzerland · SkiArena Andermatt-Sedrun | 180 km | 22 | 2,963 m | 99 CHF*, about €105 | 117 |
| 10 | Disentis | Switzerland · Disentis 3000 | 60 km | 10 | 2,833 m | 62 CHF, about €66 | 119 |
| 11 | Leukerbad | Switzerland · Leukerbad | 60 km | 9 | 2,610 m | 68 CHF, about €72 | 119 |
| 12 | Mürren | Switzerland · Jungfrau Region | 53 km | 14 | 2,970 m | 79 CHF, about €83 | 121 |
| 13 | Thyon-Les Collons | Switzerland · 4 Vallées | 410 km | 82 | 3,330 m | 82 CHF, about €87 (Printse sector) | 121 |
| 14 | Crans-Montana | Switzerland · Crans-Montana | 140 km | 27 | 2,927 m | 85 CHF, about €90 | 122 |
| 15 | Grindelwald | Switzerland · Jungfrau Region | 206 km | 44 | 2,970 m | 79 CHF, about €83 | 123 |
| 16 | Aprica | Italy · Aprica | 50 km | 15 | 2,300 m | €57* | 124 |
| 17 | Wengen | Switzerland · Jungfrau Region | 206 km | 44 | 2,970 m | 79 CHF, about €83 | 125 |
| 18 | Nendaz | Switzerland · 4 Vallées | 410 km | 82 | 3,330 m | 89 CHF*, about €94 | 126 |
| 19 | Verbier | Switzerland · 4 Vallées | 410 km | 82 | 3,330 m | 92 CHF, about €97 | 128 |
| 20 | St. Moritz | Switzerland · St. Moritz | 155 km | 24 | 3,303 m | 99.50 CHF, about €105 (Corviglia) | 129 |
The 20 closest ski resorts to Milan Bergamo (BGY)
| # | Resort | Country · ski area | Slopes | Lifts | Top | Day pass | Km from BGY |
|---|---|---|---|---|---|---|---|
| 1 | Aprica | Italy · Aprica | 50 km | 15 | 2,300 m | €57* | 63 |
| 2 | St. Moritz | Switzerland · St. Moritz | 155 km | 24 | 3,303 m | 99.50 CHF, about €105 | 93 |
| 3 | Passo Tonale | Italy · Pontedilegno-Tonale | 100 km | 29 | 3,016 m | €70 | 94 |
| 4 | Pinzolo | Italy · Skirama Dolomiti | 70 km | 15 | 2,100 m | €60 (local) | 99 |
| 5 | Livigno | Italy · Livigno | 115 km | 31 | 2,798 m | €74.50 | 102 |
| 6 | Bormio | Italy · Bormio | 50 km | 14 | 3,012 m | €59 | 103 |
| 7 | Madonna di Campiglio | Italy · Skiarea Campiglio Dolomiti di Brenta | 150 km | 60 | 2,504 m | €85* | 107 |
| 8 | Val di Sole | Italy · Superskirama | 150 km | 36 | 2,846 m | €83.50* (network) | 110 |
| 9 | Folgarida | Italy · Skiarea Campiglio Dolomiti di Brenta | 150 km | 60 | 2,180 m | €85* | 116 |
| 10 | Lenzerheide | Switzerland · Arosa-Lenzerheide | 225 km | 43 | 2,865 m | 89 CHF, about €94 | 118 |
| 11 | Arosa | Switzerland · Arosa-Lenzerheide | 225 km | 43 | 2,865 m | 89 CHF, about €94 | 124 |
| 12 | Davos | Switzerland · Davos-Klosters | 300 km | 57 | 2,844 m | 92 CHF, about €97 | 127 |
| 13 | Laax | Switzerland · Flims Laax Falera | 224 km | 28 | 3,018 m | 92 CHF, about €97 | 130 |
| 14 | Disentis | Switzerland · Disentis 3000 | 60 km | 10 | 2,833 m | 62 CHF, about €66 | 132 |
| 15 | Andermatt | Switzerland · SkiArena Andermatt-Sedrun | 180 km | 22 | 2,963 m | 99 CHF*, about €105 | 134 |
| 16 | Scuol | Switzerland · Motta Naluns | 80 km | 12 | 2,783 m | 66 CHF, about €70 | 134 |
| 17 | Sedrun | Switzerland · SkiArena Andermatt-Sedrun | 180 km | 22 | 2,963 m | 99 CHF*, about €105 | 134 |
| 18 | Klosters | Switzerland · Davos-Klosters | 300 km | 57 | 2,844 m | 92 CHF, about €97 | 136 |
| 19 | Saas-Fee | Switzerland · Saas-Fee | 100 km | 22 | 3,573 m | 84 CHF, about €89 | 146 |
| 20 | Bellwald | Switzerland · Bellwald | 20 km | 5 | 2,560 m | 52 CHF, about €55 | 147 |
Source: Intski rankings of ski resorts near Milan Malpensa and Milan Bergamo airports and the lift pass index, checked 14 September 2026. Prices marked * are 2025/26. Francs converted at the ECB rate of 11 September 2026. Slope kilometres for linked areas are the area total. Milan Linate is not in our airport rankings; Turin (72 resorts, see our Turin guide) and Verona (62) are the other Italian ski airports.
Two things stand out. Straight-line distances flatter the Swiss resorts: Zermatt is 87 km from Malpensa as the crow flies but three hours by road because the Simplon pass or the car train are in the way, while Cervinia at 91 km is two hours on the motorway. And the two lists barely overlap. Fly into the airport on the side of the mountains you want.
From Malpensa: the Matterhorn, the Valais and Aosta
Malpensa is the airport for the highest skiing in the Alps. Cervinia (91 km, about two hours by road via the A5 and the Valtournenche) is the Italian side of the 322 km Zermatt-Cervinia area, with a base at 2,050 m, a top at 3,883 m, a November to May season and a €63 day pass for the Italian side; our Cervinia vs Zermatt guide compares the two villages. Zermatt itself is closer on the map and further by road: Malpensa to Täsch is about three hours, then the shuttle train. Saas-Fee (81 km) is the same story, a car-free glacier village at 1,800 m with lifts to 3,573 m, about two and a half hours by road via the Simplon.
Pila (112 km) is the local answer: 70 km of pistes above Aosta with a base at 1,800 m, Mont Blanc views and a €58 pass, reached by gondola from the town. Courmayeur (€69) and La Thuile (€61) are further up the same valley and about two hours from Malpensa, though our data lists Geneva and Turin as their nearest airports. On the Swiss side, the Aletsch Arena from Bettmeralp (97 km), the Val d’Anniviers from Zinal (102 km) and the 4 Vallées from Thyon or Nendaz (121 to 126 km) are two and a half to three hours by road, and Andermatt (110 km) is reached through the Gotthard.
From Bergamo: Valtellina, Trentino and the Engadin
Bergamo is the low-cost airport and the Italian one. Aprica (63 km, about 90 minutes) is the closest resort to any Milan airport: 50 km of sunny, 54% easy pistes for €57, a family day trip. The Valtellina continues to Bormio (103 km, €59, a top at 3,012 m, thermal baths and the World Cup downhill) and Livigno (102 km, €74.50, 115 km of snow-sure pistes at 1,816 to 2,798 m, duty-free and a 2026 Olympic venue), both about two and a half to three hours by road. Passo Tonale (94 km, €70) has 100 km up to 3,016 m on the Presena glacier, one of the most snow-sure and affordable options in northern Italy.
Trentino’s Skiarea Campiglio Dolomiti di Brenta, 150 km on 60 lifts, is entered from Madonna di Campiglio (107 km, the smart one, €85), Pinzolo (99 km, €60 for its own sector) or Folgarida (116 km); Val di Sole (110 km) sells the wider Superskirama pass at €83.50. Over the border, St. Moritz (93 km, 99.50 CHF for the Corviglia side) is closer to Bergamo than to Zurich, about two and a half hours via the Maloja pass, and Scuol (134 km, 66 CHF) is the quiet, thermal end of the Engadin. The Graubünden giants, Arosa-Lenzerheide (225 km), Davos-Klosters (300 km) and Laax (224 km), are three hours or more and better reached from Zurich.
Getting from Milan’s airports to the resorts
Malpensa has the Malpensa Express train to Milano Centrale in about 50 minutes, from where regional and Swiss trains reach Domodossola (for Saas-Fee and the Simplon), Brig and Visp (for Zermatt, about three and a half hours in total), Aosta (for Pila), Châtillon (for the Cervinia bus) and Tirano (for Bormio and Livigno by bus). Bergamo’s airport bus reaches Milano Centrale in an hour and Bergamo station in 15 minutes, with trains to Tirano (Valtellina) and Trento (for Trentino). Rough road times: Malpensa to Cervinia 2 hours, Saas-Fee 2 hours 30, Zermatt (Täsch) 3 hours, Pila 2 hours; Bergamo to Aprica 1 hour 30, Passo Tonale 2 hours, Bormio and Livigno 2 hours 30 to 3 hours, Madonna di Campiglio 2 hours 30, St. Moritz 2 hours 30. Shared transfers run from both airports to Cervinia, Livigno, Bormio and Madonna di Campiglio in winter; the airports list Malpensa and Bergamo ground transport.
Which resort near Milan should you choose
- The highest and most snow-sure: Cervinia from Malpensa, Passo Tonale or Livigno from Bergamo.
- Value: Aprica (€57), Pila (€58), Bormio (€59) and Cervinia (€63), all under Italy’s €72 median. Our guide to the cheapest ski resorts in Europe has the wider list.
- A famous name: Zermatt or St. Moritz, at about €102 to €105 a day.
- Families and beginners: Aprica (54% easy) or Folgarida (32% easy, on the 150 km Skiarea Campiglio). Our family ski holiday guide has the checklist.
- Experts and off-piste: Zinal in the Val d’Anniviers, Andermatt, or Verbier’s 4 Vallées.
- A day trip from the city: Aprica from Bergamo, about 90 minutes.
- Early season: Cervinia and Zermatt from November, Passo Tonale’s glacier, or Saas-Fee; see our best time to ski in the Alps guide.
The resort finder matches five answers against all resorts in our database, and the ski trip cost calculator prices the week with real lift pass data.
Flying into Milan this winter? Set a snow alert on the resort pages of your shortlist and we will email you when 15 cm or more is on the way.
Quick answers
Which ski resort is closest to Milan?
Aprica, about 63 km from Bergamo airport as the crow flies and 90 minutes by road, with 50 km of slopes and a €57 day pass. From Malpensa the closest is Saas-Fee at 81 km, though Cervinia at 91 km is quicker by road.
Which Milan airport is best for skiing?
Malpensa for the Valais and the Aosta valley: Cervinia, Zermatt, Saas-Fee, Pila and the 4 Vallées. Bergamo for the Valtellina, Trentino and the Engadin: Aprica, Livigno, Bormio, Passo Tonale, Madonna di Campiglio and St. Moritz.
How many ski resorts are near Milan?
96 resorts in the Intski database lie within 250 km of Malpensa and 101 within 250 km of Bergamo. The 20 closest lie within 129 km of Malpensa and 147 km of Bergamo.
How far is Zermatt from Milan?
About 87 km from Malpensa as the crow flies but roughly three hours by road to Täsch via the Simplon pass, then the shuttle train. Cervinia, on the Italian side of the same ski area, is about two hours by road.
What is the biggest ski resort near Milan?
Zermatt-Cervinia, with 322 km of slopes and a top station at 3,883 m, 87 to 91 km from Malpensa. From Bergamo the biggest is Davos-Klosters at 300 km, three hours or more by road; the Skiarea Campiglio (150 km) is closer, about two and a half hours.
Can you get from Milan to ski resorts by train?
Partly. Zermatt is reachable by train via Domodossola and Visp in about three and a half hours from Milano Centrale, Aosta and Tirano are on the regional network, and St. Moritz via Tirano and the Bernina line. Most Italian resorts need a bus or transfer for the last leg.