For the sake of correctness, the concept of pull requests was not introduced by Github. It already existed in git in the form of the 'request-pull' subcommand. The fundamental workflow is the same. You send the project maintainer a message requesting a pull of your changes from your own online clone repo. The difference is that the message was in the form of an email. Code reviews could be conducted using mails/mailing lists too.
This is not the same as sending patches by email. But considering how people hate emails, I can see why it didn't catch on. However, Torvalds considered this implementation to be superior to Github's and once complained about the latter on Github itself [1].
[1] https://github.com/torvalds/linux/pull/17#issuecomment-56546...