Shields showed command of all three of his pitches while holding the Indians to two runs on two hits through eight innings before leaving the game after throwing 102 pitches and striking out a club-record-tying 12 batters.
Maddon decided to go with Brian Stokes in the ninth rather than letting Shields finish the game. Unfortunately for Stokes and the Rays, he left a fastball up to Garko -- a high fastball hitter -- and the first baseman deposited the ball into the left-field stands for a three-run homer.
"I let the team down," Stokes said. "They worked too hard for me to do that with one out, four runs, terrible. ... Don't know if I'll get any sleep tonight."
Stokes surrendered an RBI single to Victor Martinez, walked one batter and hit another in advance of Garko's game-winning hit.
Maddon did not second-guess his decision, saying he wanted Stokes to have an opportunity to start the inning with a clean slate rather than waiting for Shields to encounter trouble in the ninth.
"It was all mapped out, it just didn't happen," Maddon said. "Stokesy needs to get that job done. He knows that."
Shields stood behind Stokes.
"He battles every night," Shields said. "He's gone out there plenty of times and done the job for us. I mean, he had a bad game today. But I know him personally and know he's going to come back and do better."
Shields had 10 strikeouts through six innings and tied Dan Wheeler's team record of 12 -- set Sept. 12, 1999, vs. Oakland -- when he fanned Casey Blake for the third out of the seventh.
"I think my breaking ball was my most important pitch for me today," Shields said. "I was getting it over for strikes. And I was able to throw it low in the zone and make them chase because of that."
Jhonny Peralta was the only Indians player to have any success against Shields, when the shortstop hit a two-run homer with two outs in the second inning to give Cleveland a 2-0 lead.
Rocco Baldelli singled to lead off the fourth, stole second and went to third when catcher Martinez overthrew second. Carl Crawford hit into a fielder's choice to score Baldelli and cut the lead to 2-1.
Carlos Pena tied the score at 2 in the sixth with a solo home run to center field on a 1-0 pitch from Indians starter Jake Westbrook.
The Rays took a 3-2 lead in the bottom of the eighth on B.J. Upton's RBI single. Dioner Navarro then scored on a wild pitch by Indians reliever Tom Mastny to put the Rays up, 4-2.
Shields did not know he had tied the team strikeout record until reporters told him afterward.
"It is what it is," Shields said. "I'm just going to build on this game. I think our team's going to build on this game, and I think next time we'll do better."
Shields, like most of the Rays players, was ready to put Sunday's loss in the rearview mirror.
"We're going to move on," Shields said. "The Yankees are coming in and we hope to sweep them."
Said Maddon: "You lose tough games like that, you lose them together. You win tough games, you win them together. I love the way our guys are sticking together, and I think that we'll support one another through this moment and we'll move on from it. It's a loss. It's such a tough one because we did do so many things well to get ahead late in the game."