B.J. Upton made the Minnesota Twins pay severely for their decision to challenge him in the midst of a pitcher's duel Saturday night, sending James Shields and a big Tropicana Field crowd home happy with a 4-1 victory.

Shields improved to 3-0 by allowing only five hits and striking out seven before yielding to Fernando Rodney with runners on second and third and none out in the ninth.

Ryan Doumit's sacrifice fly spoiled Tampa Bay's shutout bid, but Rodney struck out the next two batters to earn his fifth save for the Rays, who have won Shields' last nine home starts dating back to last July.

Shields threw 119 pitches in front of an announced crowd of 31,774 and appeared headed for his seventh career shutout before Josh Willingham led off the ninth by extending his hitting streak to 15 games with a single and Justin Morneau followed with a double.

"All of his pitches were working tonight, in particular his fastball,'' said Rays manager Joe Maddon. "Shields just had really good command.''

Both Shields and Carl Pavano were sharp from the start and the veteran right-handers were locked into a scoreless tie heading into the decisive home half of the sixth inning.