What was left of the crowd of 19,707 erupted in cheers when it was announced it was Toronto's longest game.
"They announced it was the longest when I was out there and I figured I didn't want to be the one to mess it up," Walker (4-3) said. "Quite a few people stuck around. It was nice to see."
Toronto's previous record was 17 innings, done three times previously. The last was April 19, 2001, a 6-5 loss to the New York Yankees.
Walker -- Toronto's seventh pitcher -- worked three innings for the victory in the game that was 0-0 after eight innings and saw both teams score a run in the ninth.
Alex Rios singled off Scot Shields (6-6) with one out in the 18th, stole second and advanced to third on a wild pitch. Hudson singled to right past a drawn-in, five-man infield to end it. The previous longest this season was 15 innings, San Diego's 5-4 victory over Arizona on April 29.
"I want to go home. I want to go to sleep. I want to eat," said Toronto's Vernon Wells, who went 2-for-7. "It was the first for a lot of us, playing in a game that long. It was just good we came out on the winning end."
The game took 4 hours, 50 minutes, the longest in the majors this season.
There were two 18-inning games last season.
"That's a lot of game right there," Toronto catcher Gregg Zaun said.
The Blue Jays swept Los Angeles for the first time since May 24-27, 2004. The Blue Jays have won seven of nine overall despite missing ace Roy Halladay, who could return from the disabled list as early as Tuesday after being sidelined since July 8 with a broken bone in his left leg.
The Angels tied a season-high with their fourth straight loss. They have scored just four runs in their last 50 innings.
"These guys have been frustrated for 10 or 15 games," Los Angeles manager Mike Scioscia said. "We're about as stagnant as I've seen."
The Angels played 20 innings twice, the last time April 13, 1982, against Seattle.
Scioscia said they will try to add a pitcher to the roster on Friday after using six against the Blue Jays.
Down 1-0 in the ninth, the Blue Jays rallied off Angels closer Franciso Rodriguez, who blew a save for the third time this season.
Russ Adams led off with a walk before Wells blooped a broken bat single to right, advancing Adams to third. Shea Hillenbrand followed with a broken bat single over shortstop Orlando Cabrera, allowing Adams to score the tying run.
Los Angeles scored its lone run in the ninth.
Bush allowed one run and five hits in 8 1/3 innings. The right-hander was 0-5 in 10 starts to begin the season with Toronto before being sent to the minors on May 29. He was recalled on July 22 and won his first start back in the majors.
Los Angeles starter John Lackey pitched eight scoreless innings, allowing four hits and striking out nine.
- Toronto prospect Dustin McGowan will replace injured LHP Ted Lilly on Saturday. Blue Jays said they will decide whether to put Lilly on the 15-day DL on Friday. Lilly left Sunday's start against Kansas City after four innings after experiencing discomfort in his left shoulder.
- Guerrero didn't start because of tightness in his right calf.
- Los Angeles LF Chone Figgins stole his career-high 35th base.