He struck out four and walked one in his second career shutout.
Contreras allowed just one extra-base hit -- Jason Kubel's double in the third -- and permitted only one runner past second base.
The Sox scored all three of their runs on R-B-I singles by A-J Pierzynski (peer-ZIHN'-skee), Ryan Sweeney and Pablo Ozuna.
Minnesota's Torii Hunter was 0-for-4, ending his hitting streak at 23 games. That ties him for the fourth-best in Minnesota history. He received a standing ovation after he flied out to lead off the ninth inning.
Carlos Silva took the loss.
Twins manager Ron Gardenhire got ejected in the fifth for arguing a call. It was his second ejection this season.