Updated

C.J. Wilson struck out 12 in a six-hitter while Mitch Moreland and Chris Davis homered off Seattle rookie Michael Pineda as the Texas Rangers beat the Mariners 5-2 Wednesday night.

Wilson (4-1) retired the final 14 batters in his fourth career complete game. The Rangers stopped their losing streak at three.

Pineda (4-2) didn't make many mistakes in seven strong innings, continuing a stellar start to his career. But he left a fastball over the middle of the plate on his first pitch of the fifth inning and Moreland hit a 410-foot shot to right-center field for his fourth home run.

Davis turned on an 0-2 fastball in the seventh for his first homer.

That was plenty for Wilson, who matched his high for strikeouts. He allowed one earned run and walked one.

After the Texas bullpen blew leads in each of the last two games, Wilson wasn't about to turn this one over to the Rangers relievers.

Wilson didn't allow a runner after Chone Figgins' single with one out in the fifth inning. He struck out Milton Bradley looking for the second out of the eighth, then got a weak grounder from Miguel Olivo to end the inning.

Even with relievers ready in the bullpen, Wilson returned for the ninth. Justin Smoak lined out, Jack Cust struck out and Jack Wilson grounded out.

Wilson threw 125 pitches in his first complete game since last September against Seattle.

Pineda, the AL rookie of the month for April, saw his run of five straight quality starts to begin his career end when Davis hit a 400-foot shot to nearly the same spot in the park as Moreland's homer two innings earlier.

Pineda matched his season high with nine strikeouts and was remarkable efficient, throwing first-pitch strikes to 22 of the 27 batters he faced. Of his 97 pitches, 77 were for strikes.

He allowed seven hits and walked none facing the Rangers for the second time this season.

Texas scored a pair in the first after the inning almost ended without any damage. With two outs, Adrian Beltre's drive into the right-field corner eluded Ichiro Suzuki, and it went for an RBI double when Elvis Andrus ran through a stop sign at third. David Murphy followed with a single to score Beltre.

The Rangers added to their lead in the eighth when reliever Chris Ray continued his season of inconsistency. Having not pitched since April 23, Ray walked Ian Kinsler to start the inning. Kinsler later scored when Ray's wild pitch skipped off Olivo's glove.

Ray has now allowed 11 earned runs in 7 1-3 innings of relief.

Seattle manufactured runs in the first and third innings, both times getting sacrifice flies from Olivo to score Figgins.

NOTES: Texas optioned RHP Pedro Strop to Triple-A Round Rock and recalled RHP Mark Lowe before Wednesday's game. Strop gave up three runs in one inning of relief in Tuesday night's loss. ... Andrus extended his hitting streak to 10 games with a single in the first inning. His squeeze bunt single on Tuesday night kept the streak intact.