The Swiss led Group E at the start of the day and needed just one point to qualify while Albania had to win to revive their slim hopes of topping the table.
Valentin Stocker headed against the post in the 19th minute and the hosts went close again when Granit Xhaka wasted a good chance after good work by Shaqiri.
A ball from Xhaka set Shaqiri free inside the area and he opened the scoring in the 47th minute.
On This Day: RIP Brazil - The night football changed forever
Albania almost equalised after 75 minutes when substitute Odise Roshi hit the bar with a powerful shot and Hamdi Salihi put the rebound wide.
Just as it looked as though the home team were getting on top, Lang controlled the ball on his chest before firing Switzerland's second goal with 13 minutes to go.
Salihi pulled one back for Austria with an 88th-minute penalty after keeper Diego Benaglio brought down midfielder Roshi.
Rooney 'going through transition, just like I did' says Giggs - but is he right?
Pelle thrown out of Italy squad for refusing to shake manager's hand