Morales pitched six solid innings for his first win in two months, Williams hit his first major league home run and the Rockies beat the San Diego Padres 6-0 on Sunday.
Nolan Arenado also went deep for the Rockies, who swept a three-game series for the first time since June 13-15 in San Francisco.
Colorado has won four straight, its longest streak since winning five in a row against Atlanta and the Giants in June. It was the Rockies' first three-game sweep at home this season.
"This has been a great homestand for us," Williams said. "Two shutouts and a big walk-off win last night."
Morales (6-7) scattered four hits and walked two. He had been 0-3 with five no-decisions since beating San Diego on July 8.
The left-hander struck out four of his first seven batters and fanned six overall. It was the first time this season he started and didn't allow a run, and it came with Williams catching him for the first time.
"My concentration was good and Williams called a good game," Morales said. "We stayed on the same page the whole game and we mixed it up."
San Diego right-hander Tyson Ross entered with 14 consecutive quality starts and came within one out of making it 15. But he allowed a two-out walk to Williams and a pinch-hit single to Matt McBride, ending his day. Alex Torres got the last out of the sixth to keep it a three-run game.
"Stats at the end of the day don't matter to me," Ross said. "It's just all about doing my job on the days I get to go out there and pitch, and giving us a shot."
Ross (13-13) allowed three runs on seven hits and struck out seven in 5 2/3 innings. His one bad inning was the second, when Colorado got all the runs it needed.
"It felt great. I didn't even feel it come off the bat," Williams said. "I knew I barreled it, so I knew it had a shot. After I saw it go over I started floating around the bases."
He was more proud of catching a combined shutout with four different pitchers than going deep.
"If I had to give back my three-run homer for catching a shutout, I'd do it every day of the week," Williams said. "I take more pride in what I do behind the plate than what I do at the plate."
Arenado made it 5-0 with a two-run shot off reliever Robbie Erlin in the seventh. It was Arenado's 17th of the season.
Rockies infielder Ben Paulsen got the start in right field for the second time on this homestand. He left in the bottom of the sixth after being hit by a pitch, but his departure had more to do with the game situation than an injury.
"I was fine," he said. "I knew they were going to bring in (Drew) Stubbs anyway because of the score."
Paulsen had only two balls hit his way in six innings -- a flyout in the first and a single in the fifth -- and he handled both chances cleanly.
"Benny, I was impressed with him the last time I put him out there. It was a tough day," Rockies manager Walt Weiss said. "I probably picked the toughest day of the year to throw him in right field. Like I tell the guys when I play them out of position: `If you mess up it's my fault. You've got nothing to lose."
HOME AWAY FROM HOME
Padres 2B Jedd Gyorko's average is hovering near the Mendoza Line, but it might be much higher if he played at Coors Field half the season. Gyorko went 2 for 3 to climb to .201 for the season. In 16 career games in Denver he is hitting .333 with three home runs.
Padres: LF Abraham Almonte was sore after falling Saturday and twisting his left ankle, but was possibly available to pinch hit. Almonte was shaken up when he slipped and fell hard as he charged Josh Rutledge's sinking liner that dropped for a double in the third inning. Tended to by team trainers for several minutes, Almonte got to his feet and remained in the game until the sixth.
Rockies: C Wilin Rosario (left wrist inflammation) was activated from the 15-day disabled list but did not start. He had a pinch-hit double in the eighth and scored Colorado's sixth run. Michael Cuddyer (left hamstring strain) is eligible to come off the 15-day disabled list Monday.
Rockies: RHP Jordan Lyles (6-2) hopes to duplicate his success against the Mets when Colorado opens a three-game series in New York. Lyles beat the Mets in his only start against them on Aug. 24, 2012, with Houston. Lyles had a double and an RBI in that game.