Dan Wheeler recorded the final six outs to record the save, his second of the season.
Rick Porcello (4-9) allowed four runs on five hits and two walks in 7 1/3 innings. The right-hander also fanned eight, but lost his fifth consecutive decision.
Pena opened the bottom of the second by blasting his 23rd homer of the season. In a full count, Porcello delivered a fastball in the middle of the zone and Pena didn't miss, ripping it to right field.
Rhymes began the top of the third with a triple and later scored on Santiago's ground out, tying the game, but the Rays plated two more in the bottom half.
With the bases loaded and two away, Pena hit a liner to Rhymes at second, but it was deflected by first baseman Miguel Cabrera, allowing two to score.
Price got into trouble in the seventh. With Danny Worth on first after a fielder's choice, Price balked to move Worth into scoring position. Austin Jackson followed with a base hit to make it a 3-2 game.
Price then hit Santiago with a pitch, and that signaled the end of his start. Randy Choate came in and got the Rays out of the inning.
But Tampa tacked on an insurance run in the eighth. Sean Rodriguez led off with a single, advanced to second on a balk, then moved to third on a ground out. Porcello intentionally walked Evan Longoria before being replaced by Phil Coke. Pena was the first batter Coke faced, and again hit a ball that was deflected by Cabrera.
The hit pushed the Rays' lead to two, and Wheeler worked a 1-2-3 ninth to finish the game.
Price (14-5) has won two consecutive starts...Rhymes, a rookie, collected his first career triple...The Rays won their sixth consecutive home game. They will continue their 11-game homestand Friday with the opener of a three-game series against the AL East-leading Yankees.