Well, the relation looks like it should have a look up to Product object in Opportunity Product. But the architecture is not that simple.
First you have to create PricebookEntry records with your products & pricebooks. Once you have those, you have to bind pricebookentry records to OpportunityProducts which internally will bind itself to the Product records.
Suppose you have pricebookentry records:
And you bind them to OpportunityProducts:
So internally it will bind like this:
This architecture is to ensure that a product can have multiple price in multiple pricebooks. Its up to you to choose the price of the product you are adding into a Opportunity as OpportunityProduct.
Here is a link which you can refer to to understand this better. Also I would encourage you to see the Schema Builder in Salesforce org with Opportunity, OpportunityProduct, Product, PricebookEntry & pricebook selected.