CLEVELAND (AP) — Nick Swisher was having a bad day. One swing changed it.

It began Thursday morning when he got stuck in traffic on his way to Progressive Field for the Indians' 12:05 p.m. game against the Los Angeles Angels, turning a short trip into a 45-minute drive.

Things didn't get any better once the game started as he was hitless with three strikeouts in his first four times up.

Swisher's afternoon took a dramatic turn when his two-out grand slam off Ernesto Frieri in the 10th inning gave Cleveland a 5-3 win.

"One at-bat can turn a whole day around," he said.

Several players and coaches ran into the late-morning traffic jam, which was the talk of the clubhouse before the game.

"I almost called in saying I would be late," Swisher said. "I was freaking out."

Swisher belted a 1-2 pitch into the right-field seats to cap an improbable comeback after Albert Pujols' two-run single put the Angels ahead in the top of the inning.

Swisher threw his arms in the air when the ball cleared the wall and was mobbed by his teammates when he reached home plate.

"When I first hit it, I said, all right, that's a double," he said. "The next thing you know, it went out. I flipped my bat. I was going crazy."

Pujols' single with two outs gave the Angels a 3-1 lead, but the Indians responded off rookie Cam Bedrosian (0-1).

Michael Bourn drew a leadoff walk and took third on Jason Kipnis' one-out double. Carlos Santana walked to load the bases and Frieri replaced Bedrosian.

David Murphy flied out before Swisher, who heard boos from the crowd earlier in the game, delivered.

"That's what happens being a baseball player," he said. "You've got to go out there, fighting, grinding, scrapping and know good things are going to happen."

Swisher's blast was the ninth walk-off grand slam in the history of Progressive Field, which opened in 1994. It was also the Indians' sixth walk-off win this season.

"I've never hit a walk-off grand slam," Swisher said. "I'm giddy. I love being in those spots because it can only go two ways — either you're the goat or you're the hero."

Frieri, who allowed four runs without retiring a batter in the ninth inning Saturday against Atlanta, blew his third save chance in 14 opportunities.

"I gotta make my pitches," he said. "It stinks because we played a really good game and it's too bad for it to end like that. We deserved to win. Today I missed a pitch again and I got hurt. It cost us the win."

Swisher, who has struggled most of the season and is batting .200, was on the disabled list for two weeks with a knee injury before being activated last week. His 11th-inning home run gave the Indians a win in Boston on Sunday, but he's 3 for 24 since returning.

"He hasn't gotten a lot of hits since coming off the DL, but the ones he's gotten have been huge," Indians manager Terry Francona said.

Kyle Crockett (1-0) retired the final hitter in the 10th for his first major league win.

Pujols slapped a 3-2 pitch from Scott Atchison through the open right side of the infield to put the Angels ahead. The Indians were playing the slugger to pull with Kipnis near the bag at second base, but Pujols foiled that strategy.

"You've got to take something away, fortunately we were able to come back and win the game," Francona said of the shift. "We'd do it again, but it was hard to see that ball go through the infield."

Justin Masterson and C.J. Wilson both allowed one run in seven innings as neither pitcher was affected by Wednesday night's rainout, which pushed their scheduled start back a day.

Masterson's wild pitch put Los Angeles ahead in the second, but Bourn tied it with an RBI groundout in the third.

Masterson held the Angels to four hits, walked three and hit a batter. Wilson allowed three hits, walked four and struck out six.

Mike Trout, who extended his hitting streak to 13 games with a 10th-inning double, also walked twice and has reached base in 36 of his past 37 games. He's batting .407 (35 for 86) in his past 23 games.

Francona said left fielder Michael Brantley (concussion) could take batting practice Friday with the plan of playing Saturday. Brantley sustained the concussion while trying to break up a double play Monday.

NOTES: The teams will make up Wednesday's rainout on a mutual day off at Progressive Field, with July 28 being the most likely possibility. The Angels begin a series in Baltimore the following day while the Indians start a homestand the next day. ... Angels LHP Tyler Skaggs (strained right hamstring) expected to throw a simulated game Friday. ... The Angels return home for six games, beginning Friday against Texas. RHP Garrett Richards (6-2) will pitch the opener. ... The Indians host Detroit on Friday in the opener of a three-game series. RHP Corey Kluber (6-4) is the scheduled starter.