Sale (6-2) won his third straight start since being moved into the Chicago rotation. The left-hander fanned the side in the first and sixth innings, allowing one run on three hits and a pair of walks.
The 15-strikeout performance was one short of the White Sox single-game record, set in 1954 by Jack Harshman.
Addison Reed picked up his fifth save with a 1-2-3 ninth for the White Sox, who have won six straight games and 10 of their last 11.
Chicago trailing 1-0 with one out in the sixth when Gordon Beckham singled with and Dunn followed by clouting a homer that easily cleared the right field bleachers at Tropicana Field, his 16th of the year.
Rays starter Matt Moore (1-5) absorbed the loss despite striking out 10 batters and yielding just the two runs on four hits over seven innings.
Jose Lobaton drove in the only run for Tampa Bay, which dropped the opener of a three-game set.