In short, you are right that Naruto hasn't beat Sasuke in a head to head fight. In fact, at best, Naruto has been able to tie Sasuke on a couple occasions, but that doesn't mean that Naruto is actually weaker than Sasuke.
Sasuke is probably faster than Naruto, but Naruto has improved the most after the time-skip. Naruto has also fought more significant opponents since the time-skip. Plus, Naruto has learned some very significant skills (namely how to use the Multi-Shadow Clones better) since the time-skip that makes his ability to learn new things vastly better than Sasuke's.
Furthermore, I'm pretty sure that the main reason why Sasuke left the village was because Naruto was surpassing him too quickly. At the beginning of the series, everyone thought Naruto was a loser, but he quickly improved and showed up Sasuke in pretty much everything.
1. Bridge Arc - Sasuke thought he was better than Naruto the entire time and even managed to awaken his Sharingan (again). However, it wasn't enough to beat Haku. After Sasuke failed to beat Haku, Naruto was able to defeat Haku and talk down Zabuza. All Sasuke knew was that when he woke up, Naruto was still standing there, and the battle was over.
2. Chunin Exams - Sasuke tried to prove that he was better than Naruto the entire time, but in the end, Naruto was able to stop the giant snake, and Sasuke was haunted by this until he left the village.
3. Destroy the Leaf - Sasuke was able to hurt Gaara, but Naruto defeated him. Sasuke saw all of this and wanted to challenge Naruto even more. Afterward, Naruto and Sasuke fought on the roof. While it seemed that Sasuke was primarily in control during that fight, even Sasuke realized that Naruto's Rasengan was significantly more powerful than Sasuke's Chidori. The Chidori left a larger entry wound, but didn't transfer as much energy. Whereas the Rasengan primarily focused on transferring vast amounts of energy to the target and causing more secondary damage.