In preparation for the Copa America in July, Peru played well with midfielder Adan Balbin hitting a sudden long shot to force Lierse goalkeeper Eiji Kawashima to push away the ball in the 16th minute.
Jesus Rabanal's shot went wide in the 31st minute, while Christian Cueva also missed the target in the 35th minute.
The Japanese, playing with a 3-4-3 formation for the first time, had a chance in the 37th minute when midfielder Daigo Nishi sent a cross from the right into the area, but nobody could hit a shot on goal, while Wolfsburg midfielder Makoto Hasebe missed twice in the first half.
Japan coach Alberto Zaccheroni changed the formation after the break to a back-four system, sending CSKA Moscow's Keisuke Honda onto the pitch, and the team seemed to get into their rhythm.
But Honda's direct free kick from just outside the penalty area went wide, while he also hit a sizzling long shot wide towards the end.
Peru also came close at the death with striker Raul Ruidiaz hitting the left upright, while Kawashima was kept busy making several fine reflex saves.
"I wanted to see how the new system and the new players can work. The 3-4-3 system didn't work (as) I had expected, but it's not a surprise as I used new players," said Zaccheroni.
"We always try to play our own game, but we couldn't do it today like we usually do in other games," he added.
Meanwhile, Peru's Uruguayan coach Sergio Markarian said: "Both teams kept the ball for 50 percent even and we had many scoring chances. We could have won the game, but we couldn't, because Japan used the best tactics according to the situations."
Peru will play the Czech Republic on June 4 in Matsumoto, and the Japan-Czech Republic game will be on June 7 in Yokohama.
What the stars mean:
★ Poor ★ ★ Promising ★★★ Good ★★★★ Very good ★★★★★ Exceptional