Wales leapt off the bottom of Group G as Aaron Ramsey's penalty in Swansea set them on their way to a second Euro 2012 qualifying victory.
The game turned in the 55th minute when Switzerland's Reto Ziegler was sent off for sliding in on Chris Gunter.
Moments later Gunter was upended in the area by Timm Klose and captain Ramsey stepped up to score from the spot.
Gareth Bale made the game safe with a second Wales goal, racing clear after Steve Morison's clever reverse pass.
The win, only Wales' second over the Swiss in seven encounters, now gives Gary Speed's side hope of finishing third in the group.
A win in Bulgaria on Tuesday night, coupled with Switzerland losing their home tussle with Montenegro, will see Wales finish in a position that seemed improbable after their poor start to the campaign.
Switzerland suffered a setback in the warm-up when Fulham's Philippe Senderos pulled out to be replaced by Steve von Bergen at centre-back.
The Cesena defender made a bad start to his unexpected opportunity, earning a yellow card after just three minutes for hauling down Morison as the Norwich striker broke down the left.
Switzerland right-back Stephan Lichtsteiner caught the eye early, the Juventus player roving down the wing to cause consternation in the Welsh defence.
But the visitors, needing victory to keep alive their play-off hopes, also endured an uncomfortable moment when Darcy Blake found himself unmarked but headed well wide.
Ramsey thumped a shot soundly into the midriff of Diego Benaglio and the Wales captain then combined well with Bale, but the final pass to the waiting Morison was easily intercepted.
Switzerland carved out good chances of their own when captain Gokhan Inler broke into the Welsh area and it took a sliding tackle from Ashley Williams to deny him, then moments later Eren Derdiyok sent a looping header over the bar.
Nine minutes before the break Morison seemed certain to break the deadlock as he took a high ball down and spun to shoot from eight yards, but somehow Benaglio got a flailing arm in the way to Wales' disbelief.
Back came Switzerland and Derdiyok had Wayne Hennessey scrambling across his goal as the Bayer Leverkusen forward's shot curled just wide.
Just before the break there was moment of concern when Bale went down heavily under a tackle from Valon Behrami clutching his knee, but the Tottenham man came back on - albeit a little gingerly.
Switzerland almost took the lead soon after the restart as Joe Allen, making his first start for Wales, made a rare error and was robbed of possession.
Derdiyok galloped into the box but Allen's Swansea team-mate Neil Taylor recovered well to snuff out the danger, although at the cost of a corner.
The linesman's flag then saved Wales as Derdiyok was marginally offside when he headed home a free-kick.
Bale had a strong claim for a penalty turned down as he threaded his way through three defenders and seemed to go over Behrami's outstretched leg.
Referee Bjorn Kuipers had another difficult decision soon after as Ziegler slid in high on Gunter and the Dutch official brandished a straight red card for the high, studs-up challenge.
A third key moment in five breathless minutes followed and Gunter was again involved as the Nottingham Forest right-back cut into the area only to be scythed down by Klose.
This time Kuipers pointed to the spot and Ramsey stepped up to convert the penalty, although Benaglio again came close to stopping it.
To their credit Wales were not content to sit back and defend their slender lead against the under-strength visitors and were rewarded with a second goal.
Some energetic harrying won back possession and Morison had the vision to push the ball around the corner into the path of the on-rushing Bale, who gave Benaglio no chance with an expert left-foot finish into the far corner.
Morison, Craig Bellamy and the brilliant Bale threatened to add a third as the clock ticked down, although Behrami almost gave Switzerland a late consolation as his shot across Hennessey hit the base of the post
But Wales now go to Sofia on Tuesday night in good heart against a Bulgaria side who have now replaced them at the bottom of Group G.
Wales: Hennessey, Gunter, Blake, Ashley Williams, Taylor, Bale, Crofts (Vaughan 81), Ramsey, Allen, Bellamy, Morison (Church 81). Subs Not Used: Myhill, Matthews, Nyatanga, Edwards, Robson-Kanu.
Goals: Ramsey 60 pen, Bale 71.
Switzerland: Benaglio, Lichtsteiner, Von Bergen, Klose, Ziegler, Frei (Emeghara 70), Inler, Shaqiri (Rodriguez 62), Xhaka (Mehmedi 80), Behrami, Derdiyok. Subs Not Used: Wolfli, Degen, Fernandes.
Sent Off: Ziegler (55).
Booked: Von Bergen, Klose.
Ref: Bjorn Kuipers (Netherlands).