Price (5-6) struck out 10 batters and didn't walk anyone while holding the Astros to three runs and five hits in eight innings. Price threw 80 of his 116 pitches for strikes.
"He's not going to walk people, but he does a good job of pitching to both sides of the plate, so it's not like you can really get zoned in and think the ball is going to be center cut," Astros manager Bo Porter said. "This guy has really good command and does a good job of moving the ball in and out, up and down, and using his secondary stuff."
The game was tied to start the eighth when Williams gave up a single to Matt Joyce and walked Yunel Escobar. Pinch-hitter Jerry Sands followed with a broken-bat single into left field, scoring Joyce from second to put the Rays ahead.
The Rays took two of three from the Astros, who suffered their first series loss since May 19-21 at the Angels. It was the Rays' first series win on the road since May 12-14 at Seattle.
"It's huge," Price said. "It's been a while. I didn't remember my last win until about five minutes ago. I think that was three road trips ago. It's been rough. That was big."
Peacock labored through a 31-pitch second inning, getting himself in trouble when he gave up a pair of hits and walked a batter to allow the Rays to load the bases with no outs. He retired three of the next four batters, but did walk Escobar to force home a run.
"It definitely took a lot out of him," Porter said of the extended second inning. "You're talking three out of four pretty stressful innings there, a lot of deep counts. That second alone with the bases loaded, we were fortunate enough to get out of that inning with minimum damage."
Peacock was thrilled to strike out Desmond Jennings to end the second and strand the bases loaded and keep the Rays from blowing it open.
"I just had to make a big pitch right there and fortunately he swung at it," he said. "I knew going in when I was in the 'pen it was going to be a long day. I had to battle and that's what I tried to do, keep us in the game. The bullpen picked me up again today and did a great job of trying to hold the lead right here. We didn't come back, but it happens."
The Rays trailed, 3-2, in the sixth when Williams (1-3) got Jennings to hit into what was initially ruled an inning-ending double-play, but manager Joe Maddon challenged the call at first. The out call was overturned, meaning Jennings was safe at first and Escobar scored from third to tie the game.
"I did not think we were going to get that one," Maddon said.
Peacock gave up two runs, three hits and walked four batters in four innings, throwing 91 pitches. It's the first time he failed to pitch at least five innings in a start this year.
"I was missing with almost everything, except the slider," he said. "That was definitely my bail-out pitch. I wanted to give innings, but too many pitches. I was just struggling all day today."