Johnson scored on a penalty kick and earned an assist as the short-handed Portland Timbers came back to earn a 2-2 draw with the Vancouver Whitecaps on Saturday in Major League Soccer action.
Johnson's heroics occurred after his foul enabled Vancouver to take a 1-0 lead into the dressing room at halftime. The 26-year-old Toronto native felt extra motivation after his early miscue.
"I'm the kind of person (if) you punch me in the face, I'm not going anywhere," said Johnson, who also plays for Canada's national team. "I'm going to punch back."
Second-half substitute Jose Valencia's goal in the 84th minute gave the Timbers (4-1-7) the draw and extended their unbeaten strike to 10 games.
"This team continues to do things that amaze me," said Portland coach Caleb Porter. "We've gone 10 games without a loss, and throughout those 10 games we've come from behind, in some games two goals, and this is just another example of what this team is made of."
The tying marker came while Portland was playing with 10 men due to Mamadou Danso's ejection only three minutes earler.
Camilo led Vancouver with a goal and an assist, while Gershon Koffie also scored for the Whitecaps (3-4-4), who remain unbeaten at home (3-0-3). Vancouver has never beaten Portland in six MLS games.
"We did very well," said Koffie. "The chances we had, we took our chances. But it's a disappointing result for us, that we did not get three points."
Valencia scored after receiving a long, high lob from Johnson. The ball appeared to touch Valencia's arm and he and Vancouver defender Brad Rusin went up for it, but play was allowed to continue and Valencia tucked a short shot inside the near post.
"The players really deserved to win it," said Rennie after his club's third game in seven days. "They put in a fantastic effort this week."
Continuing a trend of recent games, he juggled his lineup and made some surprising moves. In the most notable one, Camilo, who has been utilized mainly as a midfielder, played as a lone striker.
The move paid off as Camilo was a scoring threat and also generated a number of chances. Rennie said he inserted Camilo because he was fresh after resting in Montreal.
"He is the top scorer in the club's history, and he showed us why tonight," said Rennie.
The Brazilian fired just wide on a free kick from about 35 yards out in the 23rd minute, taking the shot after Russell Teibert was fouled on the right flank. But Camilo made no mistake a minute later as he curled a shot high into the corner of the net from about 20 yards.
The free kick resulted after Camilo himself was fouled by Johnson, who received a yellow card for the infraction.
"It wasn't a great play," said Johnson. "He wasn't looking to shoot or try and do anything. He was looking for the foul. I'll have to see it again (on video), but a player with my experience should know better and know that he's looking for a foul because he's deadly on free kicks.
"But I take my hat off to him. That's a world-class free kick."
In the 52nd minute, Johnson made up for his miscue as he fired in a penalty kick to create a 1-1 tie.
The spot kick resulted after Johnson's shot hit Vancouver defender Andy O'Brien's arm and the Caps were called for a hand ball. But Koffie put the hosts ahead just two minutes later as Camilo, grappling with two defenders in the Portland box, sent the ball back to him and he curled in a high shot.
Danso received a straight red card after he and Camilo tangled legs while rushing for a loose ball deep in the Portland zone. But the short-handed situation did not hurt the Timbers for long as Valencia emerged the hero for the visitors.
Rennie said Danso's ejection was the turning point in the entertaining contest.
"We relaxed a little bit, and the goal came right after that," said Rennie. "I think we could have dealt with that better."
Vancouver goalkeeper Brad Knighton, who made his first MLS start of the season, said the Caps felt that they should have had three points instead of one.
"One long ball right down the middle of the field beats us," he said. "We can't let the referee make the decisions for us. We need to take care of business."
Notes: The Timbers lost forward Darlington Nagbe in the first half after he was injured in a sequence in which Portland's Diego Valeri delivered a hard tackle on Vancouver's Young-Pyo Lee. Porter said Nagbe "tweaked" his ankle, but the coach did not know how long he could be out. ... Whitecaps striker Darren Mattocks was rendered a second-half substitute after scoring in Vancouver's last MLS game, and defender Alain Rochat, a perennial starter, subbed in as a midfielder, a position he also played in Montreal. ... The game served as part of an in-season competition, the Cascadia Cup, between Vancouver, Portland and the Seattle Sounders. ... Gambian centre back Pa-Modou Kah dressed for his first game with Portland after signing earlier this week. He is expected to see action soon. The Timbers have a shortage at centre back as David Horst and Mikael Silvestre battle knee injuries that are expected to keep them out six to nine months. The Timbers also released Colombian centre back Hanyer Mosquera after he returned to his homeland. ... Vancouver striker Kenny Miller (hamstring) and midfielder Daigo Kobayashi remained out with injuries.