The Scot’s second-round 66 put him in contention at six under as Hidesto Tanihara (66) of Japan took control on nine under.
England’s Matt Fitzpatrick did not let his omission from Europe’s Ryder Cup team knock him off track as he boosted hopes of a successful Omega European Masters title defence with a birdie-laden second round of 64.
Fitzpatrick, who represented Europe at Hazeltine two years ago, was one of the contenders for a wild card spot in Thomas Bjorn’s side for Paris but was this week overlooked by the Dane.
However, the 24-year-old found comfort back at the familiar surroundings of Crans-Sur-Sierre, where he won the most recent of his four European Tour titles 12 months ago, and also finished runner-up in 2015.
After a relatively low-key 69 on the first day, he found his touch in some style on Friday, overcoming a poor start that included bogey fives on the first and fourth to drain eight birdies in 14 holes.
That saw him sign for a six-under-par 64 - his 13th under-par round out of 16 at the Swiss mountain resort - and left him seven under for the tournament, two shots behind leader Tanihara and joint second with Dane Lucas Bjerregaard (65) and American newcomer Doug Ghim (65).
Fitzpatrick told the European Tour: “It was a great day.
“Got off to a bad start. Two over through four but that is one reason why I love this golf course, you know you can get it back. You’ve got chances coming in, so I was delighted to take them. It is nice to be up at altitude here. I think it will be an exciting weekend.”
His compatriot Danny Willett, the 2015 champion who is without a tournament win since claiming the Masters in 2016, was also up amongst the frontrunners after a 66 left him in the group on six under.
Overnight leader Maximilian Kieffer dropped back to five under with a one-over-par 71.
Thomas Pieters, who like Fitzpatrick had also been mooted as a possible Ryder Cup wild card, had a day to forget. The Belgian snapped his putter over his knee in frustration after twice finding water on the 14th and recording a quadruple-bogey nine, leaving him having to play the final few holes putting with a wedge on his way to a 77 and a missed cut.
On the PGA Tour, Xander Schauffele had a six-under 64 for the lowest 36-hole score of his career and a two-shot lead at the BMW Championship in Philadelphia.
Tiger Woods went from a share of the lead to having to catch up again.
Schauffele has gone nearly a year without winning. A victory at Aronimink might even be enough for Jim Furyk to take the 24-year-old from San Diego as the final US captain’s pick for the Ryder Cup. He was at 13-under 127.
Justin Rose shot 63 and was two shots behind.
One day after a 62, Woods shot 70 and was five behind.