Jacques Kallis scored 48, while Graeme Smith made 38 and Albie Morkel 24 in 11 balls.
Scotland never looked like chasing it down, slumping to 13-4 before being bowled out for 81 in the 16th over with only Kyle Coetzer (42) and Majid Haq (15) reaching double figures.
Morkel took 2-15, while offspinners Johan Botha and Roelof van der Merwe each took 2-17 and Dale Steyn 2-21.
South Africa plays New Zealand at Lord's on Tuesday.
Scotland has been eliminated from the tournament.
Scotland captain Gavin Hamilton won the toss, but his decision to field looked rash as Kallis hit five fours in a single over.
The Scots didn't help themselves with some erraticfielding. Kallis was dropped on 43 when he chipped a ball from Glenn Rogers to Hamilton, who initially took the catch but
then lost control of the ball as he hit the ground.
Haq briefly halted the South African charge when he removed both openers in the space of three balls in the 10th over.
Kallis dragged a delivery on to his stumps to make it 87-1. Smith was out attempting to sweep, the ball looped into the air and being easily caught by wicketkeeper Colin Smith.
Herschelle Gibbs was stumped for 16 off Ryan Watson, making it 125-3 in the 15th over, but De Villiers and Morkel reignited the innings with a 50-run partnership from only 19 balls.
The pair hit 22 from the 17th over before Morkel was caught by Coetzer off Gordon Drummond for 24 in the 18th over.
De Villiers reached his 50 from 25 balls.
In the final over, Coetzer produced a diving catch to remove Mark Boucher for 2, but De Villiers responded with two successive sixes.
Scotland made a disastrous start to its reply.
Watson was bowled by Steyn for 4 and Hamilton was caught by JP Duminy off Wayne Parnell for 5 inside two overs.
South Africa then took two wickets in a many balls.
Navdeep Poonia was run out for 0 and Steyn then bowled Colin Smith.
Neil McCallum made 8 before he was bowled by Botha, who then trapped Jan Stander lbw for 2.
At 41-6, Scotland was in danger of posting a lower total than the Twenty20 international record of 67 scored by Kenya against Ireland last year.
But Coetzer hit 42 before he was caught and bowled by Van der Meuwe, who then bowled Majid Haq with his next ball.
Gordon Drummond was bowled by Morkel for 1 and the victory was completed when Morkel bowled Callum MacLeod.
Check out pics of ICC T20 World Cup Photos