Despite concerns about a temporary grass surface laid on top of the artificial turf at CenturyLink Field, the United States produced their most fluent performance so far to take a strong step towards qualification for next year's finals in Brazil.
Solid at the back, industrious and creative in midfield and with a threatening attack, Klinsmann's team found a cohesiveness they lacked in the early games as they reached the halfway mark of the final qualifying round with a two-point lead at the top of the standings.
The United States took the lead in the 36th minute with a nicely worked move - Michael Bradley bursting out of midfield and feeding Fabian Johnson on the left, whose low cross was turned in at the back post by Altidore.
Altidore has now scored in the last three games for the United States having gone more than 18 months without an international goal.
Panama, who went into the game unbeaten, had the ball in the net on the stroke of half-time but Luis Tejada's effort was ruled out for offside.
Johnson made sure of the win for the hosts in the 53rd minute when Geoff Cameron picked him out with a superb cross-field pass the Seattle Sounders forward confidently converted to the delight of his home fans.
Clint Dempsey struck the bar after following up on an Altidore shot that was parried by Panama goalkeeper Jaime Penedo as the United States continued to attack.
DaMarcus Beasley then hit the post in the 80th minute after bursting through and being played in by an Altidore pass.
Three teams qualify automatically from CONCACAF to next year's World Cup finals in Brazil, the United States lead on 10 points (five games), two points clear of Costa Rica and Mexico, with the fourth-placed finisher playing a two-legged playoff against Oceania winners New Zealand for one further place.
The USA next face Honduras in Salt Lake City on June 18.
Get the best features, fun and footballing frolics straight to your inbox every week.
Thank you for signing up to Four Four Two. You will receive a verification email shortly.
There was a problem. Please refresh the page and try again.