Rafael Nadal will meet Fernando Gonzalez of Chile in the men's Olympic tennis final.
Nadal overcame a second-set lapse to beat Serbia's Novak Djokovic 6-4, 1-6, 6-4 in two hours and 10 minutes, while Gonzalez beat James Blake of the US, also in three sets.
Blake, who knocked Roger Federer out on his way to the quarter-final, launched a withering verbal volley at Gonzalez, accusing him of acting against the spirit of the Olympics.
The 28-year-old American was convinced Gonzalez, a doubles gold medallist in Athens, had robbed him of a point with unsporting behaviour near the end of a gripping contest that lasted nearly three hours.
With Blake leading 9-8 in the decider he hit a fierce forehand towards Gonzalez at the net. The ball landed out but Blake was convinced it touched his opponent's racket.
In the men's doubles it's Sweden against Switzerland as Simon Aspelin and Thomas Johansson made it past the Frenchmen Arnaud Clement and Michael Llodra in three sets, while Roger Federer and Stanislas Wawrinka beat the Americans Bob and Mike Bryan in straight sets.