He did it twice in the span of six plays late in the game against the Minnesota Vikings on Sunday.
The errors cloaked the final four minutes of Minnesota's 24-13 victory in chaos, with fans throwing their hands up in confusion and normally mild-mannered Vikings coach Leslie Frazier shouting at the officiating crew.
With the Vikings trying to run out the clock, Harbaugh called his last timeout after a run by Toby Gerhart on third down. He then decided to challenge the play, and replays showed that Gerhart fumbled the ball and 49ers linebacker Patrick Willis recovered it.
Roan said Harbaugh first called the timeout, then asked him if he could still challenge the play.
"What I told him was, 'Well you challenged it not knowing what the result of the play was going to be,'" Roan said. "So I granted him the challenge and we went and looked at it. That was wrong. I should not have."
Gerhart even disputed the replay ruling, saying that he simply let the ball go after he heard the whistle blow to stop the play.
"I was stopped. They pushed me backwards. They blew the whistle. I was going down. I just put the ball on the ground and got up," Gerhart said. "They grabbed it and I don't know. That one I have no idea."
Because the 49ers won the challenge, Harbaugh was given his final timeout back.
Five plays later, the Vikings had the ball again with less than three minutes to play. After a first down run, Harbaugh called his last timeout, again only to decide later to challenge the play. Roan again granted Harbaugh the challenge, but replays showed that Gerhart did fumble the ball before recovering it himself, so the Vikings retained possession.
"My interpretation of it was that he could do that based upon the time factors and not knowing it was a challengeable play to begin with when he called timeout," Roan said.
NFL rules require a team to have a timeout to challenge a play. Because Harbaugh called his final timeout before throwing the challenge flag, he should not have been allowed to contest the ruling on the field.
The errors were magnified by the labour battle between the NFL and the NFL Referees Association. The league has locked out its referees while the two sides fight over salary, retirement benefits and operational issues.
The replacement officials, most of whom have come from the small-college ranks, have drawn heavy criticism from coaches and players across the league in the first three weeks.
"Well, I think the fact that we have to talk about it after every game is something right there," Vikings linebacker Chad Greenway said. "I don't think in my seven-year career that I've had to do that ever. So that probably tells you the story right there."
While the mistakes didn't end up costing the Vikings the game, they did manage to get Frazier's blood boiling. Frazier is known as one of the calmest, most level-headed coaches in the league, but he was having a heated argument with several members of the officiating crew during the confusing final minutes.
"There were some head-scratchers, there's no question about it," Frazier said. "But just proud of our guys. We talked about this during the week, of not getting caught up in anything other than just playing the next play."
It was a shaky day for the officials from the opening kickoff, when a flag was thrown on San Francisco for an illegal block in the back even though the 49ers were the kicking team. Harbaugh berated the official nearest to him on the sideline, and the flag was eventually picked up.
"By rule there is no foul on the play," Roan announced to the crowd. "First down, Minnesota."
The NFL has warned teams and front offices that there will be consequences for criticizing the replacement officials, and Greenway said the key was not to allow any mistakes that are made to take their heads out of the game.
"It was really weird how things were going," Greenway said. "We didn't even know what was going on. We thought it was a penalty because they had no timeouts. It was kind of a weird deal, but anyways, we got the win."
Follow Jon Krawczynski on Twitter: http://twitter.com/APKrawczynskiSuggest a correction