MONTREAL -- Canada's Denis Shapovalov advanced to the Rogers Cup semifinals with a 2-6, 6-3, 6-4 victory over France's Adrian Mannarino on Friday night.

The 18-year-old from Richmond Hill, Ont., was coming off a second-round win over 2009 U.S. Open champion Juan Martin Del Potro and a thrilling three-set upset of top-seeded tennis legend Rafael Nadal in the Round of 16.

Shapovalov will next meet the winner of a match later Friday between fourth-seeded Alexander Zverev of Germany and Kevin Anderson of South Africa.

The 29-year-old Mannarino had knocked out Canada's top player, Milos Raonic, in the second round, although the big-server from Thornhill, Ont., played with a swollen wrist.

Shapovalov started out looking low on energy despite the encouragement of the packed centre court crowd.

He double-faulted on break point in the opening game en route to a quick first-set loss.

The two lefthanders were on serve in the second when play halted 20 minutes for a light rain but the crowd sprang to life, chanting 'let's go Denis' on the changeovers as he broke serve and then served out the set.

As it was against Nadal, Shapovalov spent much of the match alternating between errors and impressive winners, consistently fighting off break points on his serve. He had nine aces and seven double faults.

He broke service for a 2-1 lead in the third only to hand it back in the next game, but a roar went up when Mannarino wasted a chance to put away a game point and Shapovalov jumped on the chance to break for a 5-4 lead. He leapt in the air as he closed out the match.

Second-seeded Roger Federer continued his mastery over 12th-seeded Roberto Bautista Agut of Spain with a 6-4, 6-4 victory. The 36-year-old Swiss will next face unseeded Dutchman Robin Haase, a 4-6, 6-3, 6-3 winner over Diego Schwartzman of Argentina.

Federer has won all seven career matches and taken all 16 sets against the 29-year-old Bautista Agut.

He is 1-0 against Haase -- a straight-sets win in Davis Cup play in 2012.

Federer said he knows Haase well from serving with him on the ATP player council and from practising together.

"I'm looking forward to a tough match because he can serve very well and he mixes up his tactics a lot," said Federer. "Sometimes he tends to just roll the ball in and use the big serve, or he uses a slice a lot and comes in.

"So I don't quite know with Robin what I'm going to get. But, as I have practised with him quite a bit, maybe I am better prepared than if I would have never hit with him before."

Federer broke serve for a 5-4 lead in the first set and broke again for 2-1 in the second en route to a one hour eight minute win over Bautista Agut. Federer was coming off a three-set win over another Spaniard, David Ferrer, against whom he is 17-0.

"My game plan worked better against Bautista Agut than against Ferrer," he said. "I believe it's because I was more aggressive coming to the net."

Haase, who upset seventh-seeded Grigor Dimitrov in the third round, reached his first career Masters Series semifinal. The 30-year-old Haase, back to 52nd in the world after battling injuries for much of his career, improved to 5-0 against 36th-ranked Schwartzman.

"I played a lot of good matches, especially against Dimitrov," said Haase. "It's tough to come back and play that same level.

"I didn't, but I managed to win because I kept fighting."