The world number two, playing his first tournament since picking an injury at the US Open, was far from his rampaging best but again proved his fitness by winning 7-5, 6-7, 6-3 in a 143-minute contest.
Nadal's win evened up his career record against the gutsy New Yorker at 3-3.
Blake, ranked 24th after missing part of the season through injury, hit the ball low and hard in a tight first set but a string of errors handed Nadal a break for 6-5 and the Spaniard saved two break points in the next game before going 1-0 up.
Nadal had all the momentum early in the second but Blake refused to lie down, saving a match point at 5-3 then twice breaking back when his opponent was serving for the match before winning the tiebreak 7-4.
Blake continued to put pressure on the Australian Open champion's serve in the decider but then fatally handed Nadal a 5-3 lead with a double fault.
The 23-year-old former number one was handing out no second chances this time and served out to love to claim victory.
Nadal next faces Russian Marat Safin, who beat seventh seeded Chilean Fernando Gonzalez for a place in the semi-finals at the Olympic tennis centre.
The 29-year-old former world number one, who has decided to retire at the end of the season, allowed just one break point -- which he saved -- and fired 12 aces on his way to a 6-3, 6-4 win over the world number 12.
Croatian Ivan Ljubicic also reached the last eight with a 7-6, 4-6, 6-4 victory over Polish qualifier Lucasz Kubot, who ended Andy Roddick's title defence in the opening round.
In the women's draw, the third round proved a step too far for China's world number 226 Zhang Shuai, who lost 6-1, 6-4 to France's Marion Bartoli.
Wildcard Zhang, who was the lowest ranked player to beat a world number one when she upset Dinara Safina in the second round, enjoyed 91 minutes back in the centre court limelight before succumbing to the 14th seed.
Roddick has easy ride into quarters
Injury forces Nadal out of Queen's
Federer rues lost chances in Melbourne final
Bhupathi-Bopanna in Artois quarters
Safina beats Kuznetsova, in final