World No. 1 Djokovic on Friday outlasted Frenchman Gael Monfils to win 3-6, 6-4, 6-3 in a two and a half hour evening match.
“It was a very physical match, but I hung in there and it was a good win,” Djokovic said. “It was an intense match, a lot of tension.”
But second seeded Spaniard Nadal and Swiss maestro Federer suffered surprising exits on the Cincinnati hardcourts in the final event before the start of the US Open in 10 days.
World number two Nadal was defeated by American seventh seed Mardy Fish 6-3, 6-4.
And Federer then crashed out to eighth-seeded Czech Tomas Berdych 6-2, 7-6 (7/3).
Djokovic improved his season record to a superb 56-1, clinching the match after Monfils hammered a forehand into the net.
He was made to work for the win as the Frenchman started quickly, hitting four aces to take the first set.
The sixth seeded Monfils continued his stellar play in the second set, breaking Djokovic’s serve in the sixth game.
But Djokovic eventually came through, advancing to the semis where he will face Berdych.
The Czech claimed the third victory over Federer in a row and, despite playing with a sore shoulder, took full advantage of his opponent who has been struggling with his groundstrokes.
Fish, who zinged a cross court forehand past Nadal to seal his first victory over the Spaniard in seven attempts, next faces world number four Andy Murray, who cruised past France’s Gilles Simon 6-3, 6-3.
Nadal had battled through three tiebreakers over three and a half hours to beat Fernando Verdasco a day earlier.
He was also playing with two burned fingertips of his right hand heavily taped. But Nadal wasn’t making any excuses.
“It was a little bit unlucky week for me with the burned fingers and with the very long match yesterday,” Nadal said. “I don’t have a lot of feeling when I threw the ball with the right hand, and to play with the backhand, too.
“I lost because Mardy played much better than me.”
Fish made the most of his opportunity, saving all four break points he faced as he avenged a quarter-final loss to Nadal at Wimbledon.
The Spaniard got off to a sluggish start, his winners scarce amid an uncharacteristic display, which featured 20 unforced errors.
On the women’s side, fourth-seeded Maria Sharapova rolled into the semi-finals for the second straight year, beating Australian Samantha Stosur 6-3, 6-2.
Sharapova will face second-seeded Vera Zvonareva, who let a second-set advantage slip but eventually put away unseeded Slovakian Daniela Hantuchova 6-3, 7-6 (8/6).
“I played a really great match and did many good things today which caused her trouble,” Sharapova said. “I was aggressive. I didn’t give her much time to do things that she likes to do when she plays well, felt like I controlled most of the points.”
Sharapova was pleased to be playing better in her last tournament before the US Open, the final Grand Slam of the year.
“Coming here, I said that it was really important to play these matches,” she said. “Obviously the more matches you play against different opponents and winning them gives you more confidence going into New York … to be playing good tennis before New York is really important.”
Sharapova won a challenge on match point to improve to 3-0 this year and 9-0 in her career against Stosur.
German ninth seed Andrea Petkovic also advanced, defeating Russian Nadia Petrova 7-5, 6-1 to reach the semi-finals.
She’ll face Jelena Jankovic for a place in the final after the Serbian advanced on a walkover when China’s Peng Shuai pulled out.