Medvedev overcame his 10th-seeded opponent 7-6 (8/6), 6-3, 7-6 (7/5) in 2hr 27min inside Arthur Ashe Stadium.
The 24-year-old will play either second seed Dominic Thiem or Australia’s Alex de Minaur, seeded 21st, in the last four on Friday.
Fifth seed Alexander Zverev of Germany faces Spain’s 20th seed Pablo Carreno Busta in the competition’s other semi-final.
Rublev raced to a 5-1 lead in the first-set tie-break before Medvedev, last year’s US Open runner-up, hauled back to win it 8-6 with an ace.
“In these moments you feel like you have to fight for every point, but you’re also thinking, ‘Okay, I have probably lost this set,’” said Medvedev.
“I felt like I could get in trouble so I was really happy to get the winner in this tough tie-breaker.
“One point decided two sets so it was a really tough match and Andrey was playing unbelievable actually,” Medvedev added.
In what was a baseline slugfest for much of the match, big-hitting Medvedev smashed 16 aces and won 89 percent of first-serve points.
His defensive game was also superior, making 75 per cent of returns to just 54 per cent by Rublev.
Medvedev and Rublev, 22, have known each other since competing in under-ten tournaments in Russia.
Medvedev is now 3-0 against his friend in professional tennis.