The Russian secured her first career semi-final on grass thanks to her first victory over a top 10 opponent in two years.
Australian Open finalist Na was competing at the pre-Wimbledon event at on the slick grass at Devonshire park for the fifth time and had never advanced past the second round.
She has now lost three of her four matches against Vesnina, five years her junior at age 26.
"Today [Friday] was a little bit of surprise, the way she's playing," said Na. "I think sometimes I can play well, but sometimes I think I lose concentration on the court. That's why the match was going like up, down a little bit."
Her opponent said: "I'm really excited about this. I'm very happy to win, It was a tough match, especially against Li Na. I like to play on grass, I feel it suits my game. I'm really enjoying the surface this week."
The world No 36 will next face the winner from compatriot and sixth seed Maria Kirilenko and Belgian Yanina Wickmayer.
Fifth seed Caroline Wozniacki won a two-hour struggle between former champions as she defeated Makarova 4-6 6-0 6-3, her sixth win without a loss over the Russian.
"She came out playing aggressively, playing well," said Wozniacki.
"But I found my game to make it a good match out there. She's strong on grass so this was a good win for me."
The Dane next faces 41st-ranked qualifier Jamie Hampton, who beat Lucie Safarova 3-6 7-6 (7-1) 6-4 to become the first American to go this far at Eastbourne since Jennifer Capriati a decade ago.
In the men's singles, Ivan Dodig's fine form in Eastbourne continued as he overcame eighth seed Fabio Fognini.
Having knocked out top seed Milos Raonic on Wednesday, the Croatian won 6-3 6-2 in his quarter-final.
Dodig will face Feliciano Lopez in the final four after the Spaniard defeated countryman Fernando Verdasco 6-4 7-6 (8/6).
Andreas Seppi and second seed Gilles Simon will compete the other semi-final, having toppled Radek Stepanek and Bernard Tomic respectively.
Meanwhile Britain's Jonny Marray and Colin Fleming booked themselves a place in the men's doubles final.
The fourth seeds edged Friday's semi-final clash in Eastbourne against Marcin Matkowski and Frederik Nielsen.
Marray played alongside the latter last year as he became the first Briton to win the Wimbledon men's doubles title since 1936.
Now, though, Nielsen was on the opposite end of the court and could not stop the British pair winning 3-6 6-3 11-9.
In the final they will face Alexander Peya and Bruno Soares, who dispatched of Britain's Jamie Murray and Australian doubles partner John Peers 6-4 6-4 earlier in the day.