Defending champion Andy Murray guaranteed he will play for another Olympic medal after battling past Steve Johnson to reach the semi-finals.

Thursday's swirling wind, which contributed to Murray almost crashing out to Fabio Fognini, had died down and the world number two initially found the conditions much more to his liking.

But, after a dominant opening set, he faltered in the second and again found himself in a real fight before recovering from a break down in the decider to win 6-0 4-6 7-6 (7/2).

Murray will now face either fourth seed Kei Nishikori or France's Gael Monfils in the last four on Saturday and will surely need to play much better to make the final.

The 29-year-old is very much the form man of world tennis having now won 27 of his last 28 matches, 16 in a row and 10 in succession at the Olympics.

American Johnson has quietly climbed to 22nd in the world rankings but Murray won their only previously meeting in Shanghai last year comfortably.

Rain delayed the start of play for half an hour and Murray seemed keen to make up for lost time, immediately breaking Johnson's serve and racing through the first set in just 26 minutes.

Murray was pinning the American on his weaker backhand wing and showing off his full repertoire of shots.

The second set was where it all went wrong for Murray against Fognini and Johnson ended the Scot's run of 12 straight games across the two matches with a break in the opening game.

The 26-year-old does not possess Fognini's extravagant talent but his serve and forehand were combining effectively while Murray's game, particularly his backhand, had gone off the boil.

The second seed missed his only break point and Johnson served out the set to love.

The American's response after his first-set mauling had been very impressive and he made the first breakthrough in the seventh game of the decider with a Murrayesque lob.

Murray could barely contain his frustration at the way he was playing but his fighting spirit can never be questioned and he hit straight back before saving another break point in a very tense exchange.

Johnson twice successfully served to stay in the match, forcing a deciding tie-break - introduced as a rule change for this Olympics.

But Murray secured the early mini-break and never let his advantage slip, finally clinching one of the more tense wins of his career after two hours and 12 minutes.

Meanwhile, Monica Puig will become the first female athlete from Puerto Rico to win an Olympic medal after beating Petra Kvitova 6-4 1-6 6-3 to reach the women's singles final.

The unseeded 22-year-old will now aim to make more history as her country's first ever gold medallist.