Landa (Astana) finished ahead of Yuri Trofimov (Katusha) and Contador (Tinkoff-Saxo) in a finish that was more cut and thrust than sledgehammer blow.
Second placed Aru (Astana) finished fourth after he was unable to crack the race leader despite having greater numbers at his disposal. Landa repeatedly attacked in the service of Aru but Contador's strength was such that he had no trouble covering both riders in the finale.
Eventually a truce was called between Contador and Aru and Landa was allowed to make the stage his own as a reward for his efforts.
"It's an important win for me and the team, because when you work the way we have today, a win like this belongs to everyone," Landa said.
"There were three of us, we had numerical superiority, and we couldn't let the stage win get away. Our objective is to put Aru in the best possible position in GC.
"We want first place with him, but we know it is difficult. Second place looks fairly safe, and we'll try to win this Giro using our superiority in numbers." - Mikel Landa.
Several key riders were pulled along by the effort and others fell by the wayside as the pace of the climb took its toll. Losers on the day were Rigoberto Uran (Etixx-QuickStep) and Jurgen Van den Broeck (Lotto-Soudal) - both now out of the top ten after less than impressive rides - while Richie Porte (Sky) continued his slide down the general classification.
Contador leads Aru by 2min 35sec on the general classification but there were changes further down. Gaining places were Andrey Amador of Movistar who now sits in third place overall at 4min 19sec, and Team Sky's Leopold Konig who paced himself into fifth overall.
Stage 15 was the first high mountain finish of the 98th Giro d'Italia with the 165km ride from Marostica ending on Madonna di Campiglio.
It took some time for a genuine break to establish itself but ten riders eventually managed to assemble themselves into a cohesive group led by Kanstantsin Siutsou (Sky), Ilnur Zakarin (Katusha) Sergio Paulinho (Tinkoff-Saxo) and Movistar pair Beñat Intxausti and Giovanni Visconti.
The complexion of the break changed with 55km to go when an active Siutsou, Visconti, Brent Bookwalter (BMC) and Hubert Dupont (AG2R) tired of the six riders who would not contribute to the effort and broke away together.
The penultimate Passo Daone climb proved difficult for the majority of the peloton as Tinkoff-Saxo and Astana drove a pace which saw several key riders dropped, among them Porte, and surprisingly, Uran.
Ahead the break lost Bookwalter as Siutsou, Visconti and Dupont pressed on to crest the Passo Daone first with the time gap to the peloton plummeting rapidly.
The chase succeeded in sweeping up the riders ahead with 16km to the summit Madonna di Campiglio as a showdown between Contador and Aru loomed.
The final climb, 15.5km long, which rose to around 6.5 per cent, began with Astana outnumbering Contador five to one but the Giro leader was untroubled in handling anything thrown at him by the superiour numbers on show.
The principal protagonist in the finale was Landa, who repeatedly attacked as Contador warily covered Aru. Tagging along was Trofimov who later found something extra in his legs to finish two seconds behind the stage winner.
Stage 15: 165km, Marostica-Madonna Di Campiglio
1 Mikel Landa (ESP) Astana 4hr 22min 35sec
2 Yury Trofimov (RUS) Katusha 0:00:02
3 Alberto Contador (ESP) Tinkoff-Saxo 0:00:05
4 Fabio Aru (ITA) Astana 0:00:06
5 Steven Kruijswijk (NED) LottoNL-Jumbo 0:00:38
6 Andrey Amador (CRC) Movistar 0:00:42
7 Leopold Konig (CZE) Sky 0:01:00
8 Tanel Kangert (EST) Astana 0:01:10
9 Alexandre Geniez (FRA) FDJ 0:01:49
10 Damiano Caruso (ITA) BMC 0:02:13
1 Alberto Contador (ESP) Tinkoff-Saxo 60hr 01min 34sec
2 Fabio Aru (ITA) Astana 0:02:35
3 Andrey Amador (CRC) Movistar 0:04:19
4 Mikel Landa (ESP) Astana 0:04:46
5 Leopold Konig (CZE) Sky 0:06:36
6 Yury Trofimov (RUS) Katusha 0:06:58
7 Damiano Caruso (ITA) BMC 0:07:10
8 Maxime Monfort (BEL) Lotto-Soudal 0:08:20
9 Giovanni Visconti (ITA) Movistar 0:09:53
10 Alexandre Geniez (FRA) FDJ 0:10:03