The Crew dropped to 1-1 after winning its season opener.
Daigo Kobayashi also scored for Vancouver, while Jairo Arrieta replied for Columbus.
Miller stole the ball from Columbus defender Glauber, rushed toward the goal and fired a shot past Crew goalkeeper Andy Gruenebaum from just inside the 18-yard box to put Vancouver ahead 2-1.
Miller, a 33-year-old Scottish international, has come under criticism for his lack of scoring since joining the Whitecaps in the summer of 2012. He said Friday he wanted to get more chances, and he was not disappointed.
He came close a couple of times in the first half before putting the ball in the back of the net. Miller excelled while wearing the captain’s armband in place of the injured Jay DeMerit, who is out six to eight months after having surgery to repair a ruptured Achilles tendon.
The Whitecaps controlled most of the game, but were caught off-guard by Arrieta’s goal early in the second half.
Kobayashi opened the scoring in the sixth minute when he took a pass from Darren Mattocks and put one in from about 25 yards out. The Whitecaps were blanked for the rest of the first half but still had a number of chances, with Miller figuring prominently.
Glauber received a yellow card after he pulled on Miller’s arm as he rushed at the net with the ball. In the 38th minute, Miller missed a pass from Mattocks from along the goal line. Two minutes later, Gruenebaum robbed Miller from point-blank range, and Nigel Reo-Coker fired the rebound high and wide.
Arrieta created a 1-1 tie after the second half had barely begun, putting a shot in off Vancouver goalkeeper Joe Cannon’s legs after the Whitecaps were slow to get back.
At DC United 1, Real Salt Lake 0: Lionard Pajoy scored on an opportunistic header in the 60th minute to lift United to victory in its home opener.
United (1-1-0) stretched its home unbeaten run to 17 matches (13-0-4) with the win. Its last home loss came in last season’s opener against Kansas City.
Salt Lake (1-1-0) remained winless in eight trips to Washington (0-5-3) since 2004.
At Toronto FC 2, Sporting Kansas City 1: Robert Earnshaw scored twice in the first half, and Toronto snapped a 15-game MLS winless streak by beating Sporting Kansas City.
The second half was a different story, but Toronto weathered the storm until the 77th minute, when Argentine striker Claudio Bieler fired a right-footed shot past Joe Bendik to cut the lead to 2-1.
Kansas City stormed the Toronto end, but Bendik made some nice saves to preserve the victory
Revolution 1, at Fire 0: Forward Jerry Bengtson scored in the 62nd minute, goalkeeper Matt Reis made four saves, and the Revs opened their season with a victory.
Bengtson headed Kelyn Rowe’s floating pass into the right side of the net midway through the 62nd minute. Rowe played the ball from the left side to the breaking Bengston, who connected from 6 yards out. Chicago keeper Sean Johnson argued unsuccessfully that Bengtson was offside.
The Fire dropped to 0-2, having failed to score in 180 minutes of play.
Union-Rapids postponed: The game between the Philadelphia Union and Colorado Rapids in Commerce, Colo., was pushed back a day because of a snow storm.